AngularJS Promise内のWeb APIレスポンスからヘッダーを取得することが可能な場合、誰かに説明することはできますか?AngularJS PromiseがWEB APIレスポンスからヘッダーを取得できないのはなぜですか?
私は次の呼び出しを作っています:
return $http({
url: "http://localhost:19260/api/Authentication/Login/{credentials}",
method: "POST",
data: JSON.stringify(input),
dataType: "json"
}).then(function (response) {
if (response.status === 200) {
var jwt= response.headers('Authorization'); //Always null!!!!
auth = true;
}
else {
auth = false;
}
}, function (response) {
auth = false;
});
私は「response.headers(...)」を介して、私のヘッダーを読み取るしようとするたびに値はnullです。どうしてこれなの?フィドラーのレスポンスを見ると、ヘッダーとその値が表示されます。なぜAngularJSはそれを見ることができないのですか?
このCORSの問題ですか?クライアント/サーバーは、どちらもlocalhost上で実行されていますが、ポートは異なります。もしそうなら、私のCORS実装で何が問題になっていますか?
まず: デフォルト以外のヘッダの値は、クライアント側に表示されないので(つまり認証あなたのWeb APIサービスとウェブサーバ構成で考慮しない場合があります(C#の)
[EnableCors(origins: "*", headers: "*", methods: "*")]
public class AuthenticationController : ApiController
{
[Route("api/Authentication/Login/{credentials}")]
[HttpPost]
public HttpResponseMessage Login([FromBody]CredentialContainer credentials)
{
var response = new HttpResponseMessage();
var jwt = GetJwtToken(credentials);
response.Headers.Add("Authorization", jwt);
response.StatusCode = HttpStatusCode.OK;
return response;
}
この質問をご覧になりたい場合があります。http://stackoverflow.com/q/27623389/215552重複しているわけではありませんが、Web APIでCORSを使用する際の助言となります。 enableCors()in global.asaxも –
ですか? – naveen
@naveen WebApiConfig.csの意味ですか? – Dave