2016-01-18 10 views
6

respond.headers() CORS के साथ काम करते समय गलत हेडर प्रतिक्रिया का विश्लेषण करना प्रतीत होता है।वू-संसाधन शीर्षलेख पूरी तरह से उपलब्ध नहीं है।

जांच यह पता:

// 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 

ध्यान दें: डेटा क्रोम देव द्वारा एकत्र की जाती उपकरण।

बात यह है कि जब मैं response.headers() तो फिर वादा में उपयोग करते हैं, यह केवल इस ऑब्जेक्ट:

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

और मेरे पास कोई दूसरा रास्ता नहीं है (है कि मैं के बारे में पता कर रहा हूँ) प्रतिक्रिया शीर्षकों तक पहुंच, यहां तक ​​कि कच्चे पाठ को भी।

मैंने क्या गलत किया?

उत्तर

3

मुझे लगता है कि this SO answer बताता है कि आप क्या देख रहे हैं।

एक CORS अनुरोध के दौरान, getResponseHeader() विधि केवल सरल प्रतिक्रिया हेडर पहुंच सकता है: कि जवाब में, वे HTML5 Rocks CORS page बोली।

  • कैश-नियंत्रण
  • सामग्री-भाषा
  • सामग्री प्रकार
  • समय-सीमा समाप्त
  • Last-Modified
  • Pragma

हैं: सरल प्रतिक्रिया हैडर परिभाषित कर रहे हैं आप चाहते हैं कि ग्राहक अन्य शीर्षकों तक पहुंच सकें, आपको Access-Control-Expose-Headers का उपयोग करना होगा हैडर। इस हेडर का मान उस प्रतिक्रिया शीर्षलेख की अल्पविराम-सीमित सूची है जिसे आप क्लाइंट को बेनकाब करना चाहते हैं।

तो, यदि आप एपीआई को नियंत्रित करते हैं तो आप कॉल कर रहे हैं, तो आप Access-Control-Expose-Headers शीर्षलेख सेट करके क्लाइंट को अतिरिक्त शीर्षलेख का पर्दाफाश कर सकते हैं।

+1

धन्यवाद। मैं खो गया था। अब मैं फिर से मिला हूँ। –

संबंधित मुद्दे