2012-02-27 7 views
16

मैं एकाधिक से कई XMLHttpRequests को अनुमति देने के लिए अपाचे को कॉन्फ़िगर करना चाहता हूं, लेकिन सभी डोमेन नहीं।एक्सेस-कंट्रोल-ऑब्जेक्ट हेडर के साथ एकाधिक डोमेन को संभालने के लिए अपाचे को कॉन्फ़िगर कैसे करें?

यह काम करता है:

Header set Access-Control-Allow-Origin "*" 

लेकिन यह असुरक्षित है, मैं मेरे द्वारा निर्दिष्ट डोमेन अनुमति देना चाहते हैं, तो googling के एक बिट के बाद मैं यह करने के लिए मिल गया:

Header set Access-Control-Allow-Origin "http://domain1.com http://domain2.com" 

लेकिन यह केवल ऊपर उठाता पहला डोमेन, दूसरा अनुमति नहीं है। एकाधिक डोमेन को सही तरीके से कैसे निर्दिष्ट करें?

उत्तर

35

आप vhost फ़ाइल में (अंदर "निर्देशिका" समूह) अपनी .htacces फ़ाइल में या में SetEnvIf उपयोग कर सकते हैं:

<IfModule mod_headers.c> 
    SetEnvIfNoCase Origin "https?://(www\.)?(mydomain\.com|mydomain2\.com)(:\d+)?$" AccessControlAllowOrigin=$0 
    Header set Access-Control-Allow-Origin %{AccessControlAllowOrigin}e env=AccessControlAllowOrigin 
</IfModule> 
इस कोड को आप

  • "mydomain से उपयोग की अनुमति कर सकते हैं

    । कॉम "और" mydomain2.com "

  • " www "के साथ या उसके बिना। सामने
  • साथ या पोर्ट नंबर शामिल
  • http या https

में आप के साथ अलग किए गए अनेक डोमेन जोड़ सकते हैं | या आप विभिन्न सबडोमेन या पैटर्न को कॉन्फ़िगर करने के लिए regexp का उपयोग कर सकते हैं।

+0

पहला सुझाव मैं कोशिश की है कि मज़बूती से –

+3

महान काम करता है, मेरा छोड़कर केवल अगर मैं 'डाल हैडर' हैडर add' के बजाय set' काम किया। –

+2

अगर मैं गलत हूं तो मुझे सही करें, लेकिन मुझे लगता है कि आपको दूसरी पंक्ति से $ 1 को हटाने की आवश्यकता है। इसके साथ ही, https पर कोई भी अनुरोध विफल हो जाएगा, क्योंकि $ 1 https में 'एस' को कैप्चर करता है और इसे अनुमत यूआरएल के अंत में जोड़ता है (इसलिए आप .coms के साथ समाप्त होते हैं)। – jonathanm

-1
Header always append Access-Control-Allow-Origin: "http://domain1.com" 
Header always append Access-Control-Allow-Origin: "http://domain2.com" 
+2

इस समस्या के जवाब के साथ कुछ स्पष्टीकरण जोड़ें कि वर्तमान समस्या को ठीक करने में यह उत्तर कैसे मदद करता है –

+0

यह 'एक्सेस-कंट्रोल-अनुमति-उत्पत्ति' शीर्षलेख के रूप में काम नहीं करता है, केवल एक मान की अनुमति देता है। इसलिए यह एकाधिक मानों को परिभाषित करने का एक वैध तरीका होगा एक शीर्षलेख जो एकाधिक इनपुट की अनुमति देता है, यह उन मामलों में से एक नहीं है। – jtimmins

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