2012-05-17 30 views
73

काम नहीं करता है, मुझे पता नहीं लगा कि मेरा .htaccess हेडर सेटिंग्स क्यों काम नहीं करती है।शीर्षलेख सेट .htaccess में एक्सेस-कंट्रोल-अनुमति-उत्पत्ति

मेरे .htaccess फ़ाइल सामग्री:

Header set Access-Control-Allow-Origin * 
Header always set Access-Control-Allow-Methods "POST, GET, OPTIONS, DELETE, PUT" 
Header always set Access-Control-Allow-Headers "*" 
RewriteEngine On 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^(.*)$ index.php [QSA,L] 

लेकिन जब मैं Header के निकालने और उन्हें index.php में जोड़ने तो सब कुछ ठीक काम करता है।

header("Access-Control-Allow-Origin: *"); 
header("Access-Control-Allow-Methods: PUT, GET, POST, DELETE, OPTIONS"); 
header("Access-Control-Allow-Headers: *"); 

मुझे क्या याद आ रही है?

उत्तर

119

यह काम करना चाहिए:

Header add Access-Control-Allow-Origin "*" 
Header add Access-Control-Allow-Headers "origin, x-requested-with, content-type" 
Header add Access-Control-Allow-Methods "PUT, GET, POST, DELETE, OPTIONS" 
+34

अपाचे मॉड्यूल हेडर 'ए 2enmod शीर्षलेख' –

+1

को सक्रिय करने के लिए मत भूलना यह तय किया गया है: "विधि नियंत्रण को अनुमति-नियंत्रण-अनुमति-विधि द्वारा अनुमति नहीं है" –

+4

इसके अलावा, इस मामले में 'शीर्षलेख सेट' का उपयोग करना सबसे अच्छा है । यदि कोड बदल दिया गया है और यह हेडर सेट करता है, तो अपाचे को 'हेडर एड' करने से डबल ** हेडर भेज देंगे। यह उदाहरण के लिए Restangular जैसे ग्राहकों को तोड़ देगा। – Julian

7

मैं GoDaddy पर एक साझा होस्टिंग है। मुझे इस सवाल का जवाब भी चाहिए, और चारों ओर खोज करने के बाद मुझे पता चला कि यह संभव है।

मैंने एक .htaccess फ़ाइल लिखी, इसे मेरे एक्शन पेज के समान फ़ोल्डर में रखा।

$.ajax({ 
     url: 'http://www.mydomain.com/myactionpagefolder/gbactionpage.php', //server script to process data 
     type: 'POST', 
     xhr: function() { // custom xhr 
      myXhr = $.ajaxSettings.xhr(); 
      if(myXhr.upload){ // check if upload property exists 
       myXhr.upload.addEventListener('progress',progressHandlingFunction, false); // for handling the progress of the upload 
      } 
      return myXhr; 
     }, 
     //Ajax events 
     beforeSend: beforeSendHandler, 
     success: completeHandler, 
     error: errorHandler, 
     // Form data 
     data: formData, 
     //Options to tell JQuery not to process data or worry about content-type 
     cache: false, 
     contentType: false, 
     processData: false 
    }); 

संदर्भ के लिए इस लेख देखें::

Header add Access-Control-Allow-Origin "*" 
Header add Access-Control-Allow-Headers "origin, x-requested-with, content-type" 
Header add Access-Control-Allow-Methods "PUT, GET, POST, DELETE, OPTIONS" 

यहाँ मेरी ajax कॉल कर रहा है: यहाँ .htaccess फाइल की सामग्री को कर रहे हैं

Header set Access-Control-Allow-Origin in .htaccess doesn't work

13
बस रिकार्ड के लिए

, मैं एक ही समस्या में भाग रहा था और कोई भी जवाब काम नहीं किया।

मैं एक हेडर cheker उपकरण का उपयोग किया: http://www.webconfs.com/http-header-check.php

मैं अपने आईपी (http://xxx.xxx.xxx.xxx/upload) और क्या वापस आया के साथ परीक्षण किया गया था निम्नलिखित था:

HTTP/1.1 301 Moved Permanently => 
Date => Sat, 10 Jan 2015 04:03:35 GMT 
Server => Apache/2.2.21 (Win32) mod_ssl/2.2.21 OpenSSL/1.0.0e PHP/5.3.8 mod_perl/2.0.4 Perl/v5.10.1 
Location => http://xxx.xxx.xxx.xxx/upload/ 
Content-Length => 380 
Connection => close 
Content-Type => text/html; charset=iso-8859-1 

हुई एक पुनर्निर्देशन हो रहा है और ajax अनुरोध नहीं करता है रीडायरेक्ट का सम्मान/पालन नहीं करें।

यह पता trned डोमेन (http://xxx.xxx.xxx.xxx/upload/)

मैं अंत में स्लैश के साथ फिर से परीक्षण किया के अंत में लापता स्लेश होने के लिए और मैं नीचे यह मिल गया। स्क्रिप्ट में भी एक स्लैश जोड़ा गया, और यह अब काम कर रहा था।

HTTP/1.1 200 OK => 
Date => Sat, 10 Jan 2015 04:03:53 GMT 
Server => Apache/2.2.21 (Win32) mod_ssl/2.2.21 OpenSSL/1.0.0e PHP/5.3.8 mod_perl/2.0.4 Perl/v5.10.1 
X-Powered-By => PHP/5.3.8 
Access-Control-Allow-Origin => * 
Access-Control-Allow-Methods => PUT, GET, POST, DELETE, OPTIONS 
Access-Control-Allow-Headers => * 
Content-Length => 1435 
Connection => close 
Content-Type => text/html 

यह जांचने के लिए इस टूल का उपयोग करें कि क्या आपके शीर्षलेख अच्छे हैं और क्या हो रहा है समस्या निवारण के लिए।

+3

मेरे पास अभी इसे हल करने की कोशिश कर रहे 11 टैब खुले हैं। यह उत्तर अधिक स्थानों पर होना चाहिए। – JDavis

+0

यह अच्छा है, हालांकि मेरे परिदृश्य में htaccess नियम काम किया। – Adnan

+0

मेरे साथ, मुझे पिछला स्लैश हटाने की आवश्यकता थी। मुझे खुशी है कि मैंने यह पाया। इस समय समस्या निवारण करने में इतना समय बिताया जब मैं नया था तो इसे घंटों पहले काम करना चाहिए था। – gorelog

5

मैंने अपाचे मॉड्यूल हेडर ए 2enmod शीर्षकों को सक्रिय किया, और समस्या हल हो गई है।

0

काम करने के साथ आधा दिन खर्च करने के बाद। हेडर चेक सेवा का उपयोग करना हालांकि सबकुछ काम कर रहा था। काम पर फ़ायरवॉल उन्हें अलग करना था

5

पर सावधान: "*" हैडर पहुंच-नियंत्रण-अनुमति दें-उत्पत्ति जोड़ने यह सब पर विवेकपूर्ण सभी को पहुंच देने के लिए नहीं है।यह केवल पता भरोसा मेजबान की एक सूची के लिए अनुमति देने के लिए बेहतर है ...

Header add Access-Control-Allow-Origin "http://aaa.com" 
Header add Access-Control-Allow-Origin "http://bbb.com" 
Header add Access-Control-Allow-Origin "http://ccc.com" 

सादर,

3

<IfModule mod_headers.c> 
    Header set Access-Control-Allow-Origin "*" 
</IfModule> 

पर सावधान रहें बाहरी रूट फ़ोल्डर की .htaccess में इस प्रयास करें: हैडर प्रवेश-नियंत्रण-अनुमति-उत्पत्ति जोड़ें "*" सभी को पहुंच प्रदान करने के लिए यह बिल्कुल उचित नहीं है। मुझे लगता है कि आप उपयोगकर्ता को:

<IfModule mod_headers.c> 
    Header set Access-Control-Allow-Origin "http://example.com" 
</IfModule> 
2

मैं हैडर-चेकर साइट http://www.webconfs.com/http-header-check.php के लिए लिंक के लिए Miro के जवाब +1। जब भी आप इसका इस्तेमाल करते हैं, यह एक अप्रिय विज्ञापन पॉप अप करता है, लेकिन फिर भी, यह एक्सेस-कंट्रोल-ऑब्जेक्ट-हेडर हेडर की उपस्थिति को सत्यापित करने के लिए बहुत उपयोगी है।

मैं अपने वेब पेज पर जावास्क्रिप्ट से .json फ़ाइल पढ़ रहा हूं। मैंने पाया कि मेरी .htaccess फाइल में निम्नलिखित को जोड़ जब IE 11 में अपने वेब पेज को देखने समस्या तय (संस्करण 11.447.14393.0):

<FilesMatch "\.(json)$"> 
    <IfModule mod_headers.c> 
    Header set Access-Control-Allow-Origin "*" 
    </IfModule> 
</FilesMatch> 

मैं भी /etc/httpd.conf के लिए निम्न जोड़ा (अपाचे के विन्यास फाइल):

AllowOverride All 

हैडर-चेकर साइट है कि पहुंच-नियंत्रण-अनुमति दें-उत्पत्ति हैडर अब भेजा जा रहा है (धन्यवाद, Miro) सत्यापित।

हालांकि, Firefox 50.0.2, ओपेरा 41.0.2353.69, और एज 38.14393.0.0 सब किसी भी तरह फ़ाइल लाने, यहां तक ​​कि बिना पहुंच-नियंत्रण-अनुमति दें-उत्पत्ति हैडर। (नोट: वे आईपी पते की जांच कर रहे हैं, क्योंकि दो डोमेन जो मैं उपयोग कर रहा था, दोनों एक ही सर्वर पर होस्ट किए गए हैं, उसी IPv4 पते पर।)

हालांकि, क्रोम 54.0.2840.99 मीटर (64-बिट) अनदेखा करता है पहुंच-नियंत्रण-अनुमति दें-उत्पत्ति शीर्षक और किसी भी तरह विफल रहता है, ग़लती से रिपोर्टिंग:

नहीं 'पहुंच-नियंत्रण-अनुमति दें-उत्पत्ति' शीर्षक का अनुरोध किया संसाधन पर मौजूद है। उत्पत्ति '{mydomain}' इसलिए पहुंच की अनुमति नहीं है।

मुझे लगता है कि यह किसी प्रकार का "पहला" होना चाहिए। आईई सही ढंग से काम कर रहा है; क्रोम, फ़ायरफ़ॉक्स, ओपेरा और एज सभी छोटी हैं; और क्रोम सबसे खराब है। क्या यह सामान्य मामले के बिल्कुल विपरीत नहीं है?