2012-08-13 18 views
13

मैं अनुरोध में मूल शीर्षलेख की सामग्री की प्रतिलिपि बनाने के लिए एक एक्सेस-कंट्रोल-अनुमति-उत्पत्ति शीर्षलेख के साथ HTTP विकल्प विधि को प्रतिक्रिया प्रदान करने का प्रयास कर रहा हूं।एक्सेस-कंट्रोल-अनुमति-उत्पत्ति हेडर काम नहीं कर रहा है - मैं गलत क्या कर रहा हूं?

यह स्पष्ट रूप से काम नहीं कर रहा है, कारणों से मैं समझ नहीं पा रहा हूं।

tl; डॉ: विकल्प से प्रतिक्रिया का कहना है:

Access-Control-Allow-Origin: http://10.0.0.105:9294 

बाद प्राप्त होते हैं:

Origin:http://10.0.0.105:9294 

क्रोम का कहना है:

Origin http://10.0.0.105:9294 is not allowed by Access-Control-Allow-Origin 

नहीं WTF?

अधिक विस्तार ...

Chrome की डेवलपर टूल विंडो में देख कर, अनुरोध हेडर हैं:

OPTIONS /user/kris HTTP/1.1 
Host: 10.0.0.104:8080 
Connection: keep-alive 
Access-Control-Request-Method: GET 
Origin: http://10.0.0.105:9294 
User-Agent: Mozilla/5.0 (X11; Linux i686) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/21.0.1180.75 Safari/537.1 
Access-Control-Request-Headers: origin, x-requested-with, content-type, accept 
Accept: */* 
Referer: http://10.0.0.105:9294/ 
Accept-Encoding: gzip,deflate,sdch 
Accept-Language: en-GB,en-US;q=0.8,en;q=0.6 
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.3 

प्रतिक्रिया हेडर हैं:

HTTP/1.0 200 OK 
Date: Mon, 13 Aug 2012 11:23:45 GMT 
Server: WSGIServer/0.1 Python/2.7.3 
Content-Length: 0 
Access-Control-Allow-Methods: GET, PUT, POST, DELETE, HEAD, OPTIONS 
Access-Control-Max-Age: 10 
Access-Control-Allow-Origin: http://10.0.0.105:9294 
Access-Control-Allow-Headers: X-Requested-With, Authorization, X-Huzu-User, Content-Type, Accept 
Content-Type: text/html; charset=UTF-8 

jQuery अपने भेजता है के बाद विकल्प अनुरोध करते हैं और उपर्युक्त प्रतिक्रिया प्राप्त करते हैं, 2 विषम चीजें होती हैं। विकल्प प्रतिक्रिया (जो एक 200 है) एक त्रुटि के रूप में डेवलपर कंसोल में दिखाई देता है: GET अनुरोध

OPTIONS http://10.0.0.104:8080/user/kris 200 (OK) 

जो बाद खारिज कर दिया है। कंसोल में त्रुटि:

XMLHttpRequest cannot load http://10.0.0.104:8080/user/kris. Origin http://10.0.0.105:9294 is not allowed by Access-Control-Allow-Origin. 

मैं नहीं देख सकता क्यों नहीं। मैं क्या गलत कर रहा हूं?

+0

मेरे पास jQuery कोड का न्यूनतम असफल उदाहरण नहीं है जो यहां पोस्ट करने के लिए उपयोग किया जाएगा। मान लें कि जावास्क्रिप्ट कोड के बारे में कुछ भी अजीब बात नहीं है, यानी यह सिर्फ एक ही jQuery प्राप्त() है, जिसके परिणामस्वरूप ऊपर दिए गए विकल्प अनुरोध हैं। मेरा सवाल है: प्रतिक्रिया में क्या गलत है? – scav

+0

क्या यह सिर्फ मुझे है या होस्ट यूआरएल (10.0.0.104:8080) और रेफरर यूआरएल (10.0.0.105:9294/) के बीच कोई अंतर है? – rene

+0

@rene हाँ। मेरा सर्वर एक पाइथन wsgi ऐप है जो मेरी स्थानीय मशीन (10.0.0.104:8080) पर चल रहा है, और क्रॉस-साइट परीक्षण एक पृष्ठ से हो रहा है जिसे मैं 10.0.0.105:9294 से लोड कर रहा हूं।मुझे नहीं पता कि रेफरर के पास नियंत्रण नियंत्रण पर क्या असर पड़ता है। क्या आपको लगता है कि यह प्रासंगिक है? यदि हां, तो मैं इसके साथ क्या करूँ? – scav

उत्तर

20

ठीक है, मुझे लगता है कि मुझे यह मिल गया है। ऐसा लगता है कि प्री-फ्लाइट विकल्प अनुरोधों का उचित प्रबंधन आवश्यक है, लेकिन क्रॉस-साइट संसाधन अनुरोधों के लिए उपयोगी नहीं है

के बाद विकल्प अनुरोध संतोषजनक हेडर के साथ वापस आता है, उसी यूआरएल को बाद में किसी भी अनुरोध करने के लिए सभी प्रतिसाद भी, आवश्यक "पहुंच-नियंत्रण-अनुमति दें-उत्पत्ति" शीर्षक करना होगा अन्यथा ब्राउज़र उन्हें निगल जाएगा, और वे डीबगर विंडो में भी दिखाई नहीं देंगे।

तो यह जैसा दिखता है ब्राउज़र ने विकल्प प्रतिक्रिया में कुछ समस्या के कारण अनुरोध रद्द कर दिया है, लेकिन वास्तव में, ब्राउज़र वास्तविक अनुरोध से प्रतिक्रिया शीर्षकों को देख रहा है और फिर उन्हें अस्वीकार कर रहा है।

+0

जैसा ही है, यूआर पूछताछ के बाद से, क्या आप इस तरह के प्रश्न में मेरी मदद कर सकते हैं ? http://stackoverflow.com/questions/11953132/no-response-obtained-while-implementing-cors –

+3

@scav आपने इसे कैसे हल किया – Hunt

+0

@scav +1 आपको धन्यवाद नहीं दे सकता। आपने मुझे डिबगिंग के घंटे बचाए! – alf

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