मैं AJAX के माध्यम से एक jQuery संवाद में डेटा लोड करने का प्रयास कर रहा हूं लेकिन अनुरोध फ़ायरफ़ॉक्स (34.0.5) में विफल रहा है। ठीक काम करता है और मुझे क्रोम और सफारी में कोई शिकायत नहीं है।CORS फ़ायरफ़ॉक्स में काम नहीं कर रहा है
मेरे अपाचे conf शामिल हैं:
Header set Access-Control-Allow-Origin "*"
Header set Access-Control-Allow-Methods: "PUT, GET, POST, DELETE, OPTIONS"
Header set Access-Control-Allow-Headers "Origin, X-Requested-With, Content-Type, Accept"
jQuery बस है:
$('#dialog').load('example.php', function() { $('#dialog').dialog('open'); });
फ़ायरफ़ॉक्स निम्नलिखित कंसोल त्रुटि के साथ प्रतिक्रिया करता है:
Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at http://www.example.com/example.php. This can be fixed by moving the resource to the same domain or enabling CORS.
से प्रतिक्रिया हेडर का निरीक्षण AJAX अनुरोध वे सब एक बरकरार प्रतीत होता है अपाचे में जो घोषित किया गया है उसके साथ इनलाइन। क्या मुझे कुछ अन्य निर्देश शामिल करना चाहिए या इस काम के लिए कॉन्फ़िगरेशन को किसी तरीके से बदलना चाहिए?
अद्यतन: इस मुद्दे की जड़ पर यह तथ्य है कि मैं इसे example.com
और www.example.com
दोनों को कार्य करने के लिए चाहता हूं। प्रश्न में साइट के पास दोनों उदाहरणों में हेडर <base href="www.example.com" />
में हमेशा एक टैग होता है क्योंकि यह डिफ़ॉल्ट साइट ढांचे का हिस्सा है। मैंने तब से पता चला है कि इस लिंक को हटाने से AJAX अनुरोध example.com पर काम करने की अनुमति देता है, भले ही यह अभी भी विशेष रूप से www सबडोमेन से संसाधन कहता है।
दिलचस्प बात यह है कि अनुरोध के कई पहलू और प्रतिक्रिया हेडर बदलते हैं जब यह टैग हटा दिया जाता है। यहां किसी भी व्यक्ति के लिए जो प्रभाव के बारे में सुराग रख सकता है, मैं नीचे अनुरोध और प्रतिक्रिया शीर्षलेख दोनों को चिपका रहा हूं।
यहां <base>
टैग हटाए गए शीर्षलेख हैं।
प्रतिक्रिया
HTTP/1.1 200 OK
Date: Sun, 18 Jan 2015 22:11:04 GMT
Server: Apache/2.4.7 (Ubuntu)
X-Powered-By: PHP/5.5.9-1ubuntu4.5
Set-Cookie: PHPSESSID=xxx; path=/; HttpOnly
language=en; expires=Tue, 17-Feb-2015 22:11:04 GMT; Max-Age=2592000; path=/; domain=www.example.com
currency=CAD; expires=Tue, 17-Feb-2015 22:11:04 GMT; Max-Age=2592000; path=/; domain=www.example.com
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0, public
Pragma: no-cache
Content-Encoding: gzip
access-control-allow-methods: PUT, GET, POST, DELETE, OPTIONS
access-control-allow-origin: *
access-control-allow-headers: Origin, X-Requested-With, Content-Type, Accept
Content-Length: 1515
Connection: close
Content-Type: text/html; charset=utf-8
अनुरोध
GET /example.php HTTP/1.1
Host: www.example.com
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.8; rv:34.0) Gecko/20100101 Firefox/34.0 FirePHP/0.7.4
Accept: text/html, */*; q=0.01
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Referer: http://example.com/
Origin: http://example.com
x-insight: activate
Connection: keep-alive
Cache-Control: max-age=0
और यहाँ <base>
टैग को बरकरार रखते हुए हेडर हैं: इस मामले में ajax कॉल सफल रहा था। ये शीर्षलेख उस परिदृश्य को प्रतिबिंबित करते हैं जहां AJAX कॉल विफल हुआ।
प्रतिक्रिया
HTTP/1.1 302 Found
Date: Sun, 18 Jan 2015 22:12:26 GMT
Server: Apache/2.4.7 (Ubuntu)
X-Powered-By: PHP/5.5.9-1ubuntu4.5
Set-Cookie: PHPSESSID=xxx; path=/; HttpOnly
language=en; expires=Tue, 17-Feb-2015 22:12:26 GMT; Max-Age=2592000; path=/; domain=www.example.com
currency=CAD; expires=Tue, 17-Feb-2015 22:12:26 GMT; Max-Age=2592000; path=/; domain=www.example.com
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0, public
Pragma: no-cache
Status: 302
Location: https://www.example.com/index.php
access-control-allow-methods: PUT, GET, POST, DELETE, OPTIONS
access-control-allow-origin: *
access-control-allow-headers: Origin, X-Requested-With, Content-Type, Accept
Content-Length: 0
Connection: close
Content-Type: text/html
अनुरोध
OPTIONS /example.php HTTP/1.1
Host: www.example.com
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.8; rv:34.0) Gecko/20100101 Firefox/34.0 FirePHP/0.7.4
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
Origin: http://example.com
Access-Control-Request-Method: GET
Access-Control-Request-Headers: x-requested-with
x-insight: activate
Connection: keep-alive
Cache-Control: max-age=0
: यह ध्यान देने योग्य है कि प्रतिक्रिया हेडर में 'स्थान' फ़ील्ड का कहना है 'https' भले ही यह एक https कनेक्शन पर नहीं हो रहा था लायक है
क्या सीओआरएस हेडर दो बार भेजे जा रहे हैं? मुझे हाल ही में एक समस्या थी जहां मैंने गलती से इसे अपने एचटीएसीएसी के साथ-साथ मेरे अपाचे को भी जोड़ा था। इससे हेडर मानों को दो बार भेजा जाना पड़ा जिससे कुछ ब्राउज़र ठीक से काम नहीं कर पाए। – JohnP
ऐसा नहीं है कि मैं देख सकता हूं। मेरे पास .htaccess केवल apache vhost conf में कुछ भी सेट नहीं है - हालांकि लगता है कि यह भी हो सकता है यदि आप 'हेडर सेट' के बजाय 'हेडर एड' का उपयोग करते हैं। जैसा कि यह खड़ा है, मैं केवल प्रतिक्रिया शीर्षकों में उन्हें देख रहा हूं। – billynoah
मुझे एक ही समस्या है (यह क्रोम पर काम करता है, एफएफ में नहीं) लेकिन बिना टैग का उपयोग किया जा रहा है। –
aesede