2016-01-18 11 views
6

CORSで作業しているときに、response.headers()が間違ったヘッダー応答を解析しているようです。vue-resourceクロスオリジン応答からのヘッダーが完全に利用可能ではありません。

チェックこのアウト:これまでのところ

// REQUEST 
OPTIONS /mohsenin/loans HTTP/1.1 
Host: mohsenin.app 
Connection: keep-alive 
Access-Control-Request-Method: GET 
Origin: http://mclient.app 
User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36  (KHTML, like Gecko) Chrome/46.0.2490.80 Safari/537.36 
Access-Control-Request-Headers: accept, authorization, crossorigin 
Accept: */* 
Referer: http://mclient.app/ 
Accept-Encoding: gzip, deflate, sdch 
Accept-Language: en-US,en;q=0.8,fa;q=0.6 

// RESPONSE 
HTTP/1.1 200 OK 
Server: nginx/1.9.3 (Ubuntu) 
Content-Type: text/html; charset=UTF-8 
Transfer-Encoding: chunked 
Connection: keep-alive 
Allow: GET,HEAD 
Cache-Control: no-cache, private 
date: Mon, 18 Jan 2016 09:54:44 GMT 
access-control-allow-origin: http://mclient.app 
Vary: Origin 
access-control-allow-credentials: true 
access-control-allow-methods: GET, POST, PUT, DELETE 
access-control-allow-headers: ACCEPT, AUTHORIZATION, CROSSORIGIN 
Content-Encoding: gzip 

とても良い、これはオプションの後に呼び出されているGETリクエストです:

// REQUEST 
GET /mohsenin/loans HTTP/1.1 
Host: mohsenin.app 
Connection: keep-alive 
Accept: application/json, text/plain, */* 
Origin: http://mclient.app 
User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36  (KHTML, like Gecko) Chrome/46.0.2490.80 Safari/537.36 
Authorization: Bearer [..OLDTOKEN..] 
crossOrigin: false 
Referer: http://mclient.app/ 
Accept-Encoding: gzip, deflate, sdch 
Accept-Language: en-US,en;q=0.8,fa;q=0.6 

//RESPONSE 
HTTP/1.1 200 OK 
Server: nginx/1.9.3 (Ubuntu) 
Content-Type: application/json 
Transfer-Encoding: chunked 
Connection: keep-alive 
Cache-Control: no-cache 
Date: Mon, 18 Jan 2016 09:54:44 GMT 
Authorization: Bearer [..NEWTOKEN..] 
Access-Control-Allow-Origin: http://mclient.app 
Vary: Origin 
Access-Control-Allow-Credentials: true 

注:データはクロムDEVによって収集されますツール。

事は、私が.then約束でresponse.headers()を使用する場合、それだけでこのオブジェクトを返し、次のとおりです。

Object {content-type: "application/json", cache-control: "no-cache", "": ""} 

は、私は(私の知ること)他に方法がありません応答ヘッダーにアクセスします。

どうしたのですか?

答えて

3

私はthis SO answerは、あなたが見ているものを説明していると思います。その答えに、彼らはHTML5 Rocks CORS pageを引用:

CORS要求時には、getResponseHeader()方法は、単純なレスポンスヘッダのみをアクセスすることができます。

  • のCache-Control
  • のContent-言語
  • のContent-Type
  • は場合
  • のLast-Modified
  • プラグマ

有効期限:次のように単純なレスポンスヘッダが定義されていますクライアントが他のヘッダーにアクセスできるようにするには、Access-Control-Expose-Headersを使用する必要がありますヘッダ。このヘッダーの値は、クライアントに公開する応答ヘッダーのカンマ区切りリストです。

したがって、あなたが呼び出しているAPIを制御する場合は、Access-Control-Expose-Headersヘッダーを設定して、追加のヘッダーをクライアントに公開することができます。

+1

感謝。私は迷った。今私は再び見つけられる。 –

関連する問題