मेरे पास मेरे स्थानीय लैन (मशीन) पर एक मशीन है जिसमें दो वेब सर्वर हैं। पहला XBMC (पोर्ट 8080 पर) में इन-बिल्ट इन है और हमारी लाइब्रेरी को प्रदर्शित करता है। दूसरा सर्वर एक चेरी पाइथन स्क्रिप्ट (पोर्ट 8081) है जिसका उपयोग मैं मांग पर एक फ़ाइल रूपांतरण को ट्रिगर करने के लिए कर रहा हूं। फ़ाइल रूपांतरण XBMC सर्वर से दिए गए पृष्ठ से AJAX POST अनुरोध द्वारा ट्रिगर किया गया है।
- गोटो http: // machineA: 8080 जो पुस्तकालय प्रदर्शित करता है
- लाइब्रेरी प्रदर्शित है
- 'कन्वर्ट' लिंक पर उपयोगकर्ता क्लिक जो निम्नलिखित आदेश जारी करता है -
jQuery के अजाक्स अनुरोध
$.post('http://machineA:8081', {file_url: 'asfd'}, function(d){console.log(d)})
- ब्राउज़र निम्नलिखित हेडर के साथ एक HTTP विकल्प अनुरोध जारी करता है;
अनुरोध हैडर - विकल्प
Host: machineA:8081
User-Agent: ... Firefox/4.01
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive
Origin: http://machineA:8080
Access-Control-Request-Method: POST
Access-Control-Request-Headers: x-requested-with
- सर्वर निम्नलिखित के साथ प्रतिक्रिया करता है;
प्रतिक्रिया हैडर - विकल्प (स्थिति = 200 ठीक)
Content-Length: 0
Access-Control-Allow-Headers: *
Access-Control-Max-Age: 1728000
Server: CherryPy/3.2.0
Date: Thu, 21 Apr 2011 22:40:29 GMT
Access-Control-Allow-Origin: *
Access-Control-Allow-Methods: POST, GET, OPTIONS
Content-Type: text/html;charset=ISO-8859-1
- तब बातचीत बंद हो जाती है। ब्राउज़र, सिद्धांत रूप में, एक POST अनुरोध जारी करना चाहिए, क्योंकि सर्वर ने सही (?) CORS हेडर (एक्सेस-कंट्रोल-अलाउंस-ओरिजिन: *) के साथ जवाब दिया।
समस्या निवारण के लिए, मैंने http://jquery.com से समान $ .post कमांड भी जारी किया है । यह वह जगह है जहाँ मैं stumped हूँ, jquery.com से, पोस्ट अनुरोध काम करता है, एक पोस्ट के बाद एक विकल्प अनुरोध भेजा जाता है। इस लेनदेन के हेडर नीचे हैं;
अनुरोध हैडर - विकल्प
Host: machineA:8081
User-Agent: ... Firefox/4.01
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive
Origin: http://jquery.com
Access-Control-Request-Method: POST
प्रतिक्रिया हैडर - विकल्प (स्थिति = 200 ठीक)
Content-Length: 0
Access-Control-Allow-Headers: *
Access-Control-Max-Age: 1728000
Server: CherryPy/3.2.0
Date: Thu, 21 Apr 2011 22:37:59 GMT
Access-Control-Allow-Origin: *
Access-Control-Allow-Methods: POST, GET, OPTIONS
Content-Type: text/html;charset=ISO-8859-1
अनुरोध हैडर - POST
Host: machineA:8081
User-Agent: ... Firefox/4.01
Accept: */*
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive
Content-Type: application/x-www-form-urlencoded; charset=UTF-8
Referer: http://jquery.com/
Content-Length: 12
Origin: http://jquery.com
Pragma: no-cache
Cache-Control: no-cache
प्रतिक्रिया हैडर - पोस्ट (स्टेटस = 200 ओके)
Content-Length: 32
Access-Control-Allow-Headers: *
Access-Control-Max-Age: 1728000
Server: CherryPy/3.2.0
Date: Thu, 21 Apr 2011 22:37:59 GMT
Access-Control-Allow-Origin: *
Access-Control-Allow-Methods: POST, GET, OPTIONS
Content-Type: application/json
मैं बाहर काम नहीं कर सकता क्यों एक ही अनुरोध एक साइट से काम करेगा, लेकिन दूसरे से नहीं। मैं उम्मीद कर रहा हूं कि कोई मुझे याद दिलाने में सक्षम हो सकता है। आपकी सहायताके लिए धन्यवाद!