2011-12-30 15 views
5

मैं विंडोज पर सफारी के साथ क्रॉस-डोमेन अनुरोध करने की कोशिश कर रहा हूं। मेरा सफारी संस्करण 5.1.2 है।सफारी और क्रोम में क्रॉस-डोमेन अनुरोधों की अनुमति है? सर्वर प्रतिक्रिया बनाम कमांड लाइन तर्क

यह एक शास्त्रीय प्रश्न है। मैं कई स्थानों में पढ़ा के रूप में सर्वर प्रतिक्रिया

Access-Control-Allow-Origin: * 

मैं इस पोस्ट को पढ़ लिया है में followin हैडर के साथ प्रतिक्रिया क्रोम और सफारी पार डोमेन अनुरोध की अनुमति देता है कि जब तक। How to allow cross-domain requests in Safari? और कई अन्य स्टैक ओवरफ्लो साइट पर भी।

हालांकि, उनमें से कोई भी मेरे प्रश्न का उत्तर नहीं देता है।

मुझे क्रोम और सफारी क्रॉस-डोमेन AJAX अनुरोध करने में समस्याएं आ रही हैं, भले ही मैं सर्वर से आवश्यक शीर्षलेख भेज रहा हूं।

अंततः मैं क्रोम को "- अक्षम-वेब-सुरक्षा" के साथ चला गया। फिर यह काम किया।

मेरे सवालों का:

1) मैं सफारी के साथ क्या करते हैं? क्या मैं एक समान कमांड लाइन तर्क का उपयोग करता हूं?

2) इससे भी महत्वपूर्ण बात, मैं किसी कृपया मुझे बताओ के रूप में सर्वर हेडर के साथ प्रतिक्रिया क्रॉस-डोमेन कार्यक्षमता डिफ़ॉल्ट रूप से क्रोम और सफारी में अनुमति है या नहीं के रूप में लंबे या कर सकते हैं मैं करना है यह सुनिश्चित करें कि

क) सर्वर एक हैडर

और

ख) ब्राउज़र एक उचित तर्क के साथ शुरू होता है के साथ प्रतिक्रिया करता है।

+0

क्रॉस-डोमेन अनुरोध सही तरीके से काम करने के लिए बहुत सारे विवरण हैं। यह सब उस अनुरोध के प्रकार पर निर्भर करता है जिसे आप बनाने की कोशिश कर रहे हैं। क्या आप अपने अनुरोध के बारे में अधिक जानकारी दे सकते हैं? आप यहां सीओआरएस अनुरोध करने के बारे में और जान सकते हैं: http://www.html5rocks.com/en/tutorials/cors/ – monsur

उत्तर

4

मुझे समस्या मिली। सीओआरएस के बारे में और अधिक पढ़ने में html5rocks.com/en/tutorials/cors मदद मिली। मुझे एहसास हुआ कि मेरे अनुरोध प्रीफलाइट अनुरोध (विकल्प) को ट्रिगर कर रहे थे और इन अनुरोधों को ठीक से संभालने के लिए सर्वर स्थापित नहीं किया गया था। प्रीफलाइट अनुरोधों का कारण बनने का कारण यह था क्योंकि मैं JQuery का उपयोग कर रहा था और यह मेरे अनुरोधों में कस्टम हेडर जोड़ रहा था। मैंने इस अतिरिक्त हेडर को जोड़ने से रोकने के लिए अपना कोड संशोधित किया और मेरे अनुरोधों को अब प्रीफलाइट अनुरोधों की आवश्यकता नहीं है। अब मुझे वेब सुरक्षा को अक्षम करने की ज़रूरत नहीं है और यह ठीक काम करता है।

+2

क्या आप कह सकते हैं कि आपने अपना कोड कैसे संशोधित किया? अतिरिक्त हेडर क्या था? मुझे यह वही समस्या हो सकती है। – T3db0t

+0

उपरोक्त कॉर्स प्रलेखन लिंक की जांच करें। जांचें कि प्रीफलाइट अनुरोधों की आवश्यकता नहीं है। फ़ायरफ़ग या एक समान ब्राउज़र टूल के माध्यम से अपने http संचार की जांच करें और अपने http अनुरोधों के सभी शीर्षलेख अनुभागों की जांच करें। – CEGRD

+2

यह स्पष्ट रूप से कस्टम (एक्स- *) शीर्षलेख नहीं है लेकिन सामग्री-प्रकार अनुरोध हेडर: "यदि आप यह मान एप्लिकेशन/x-www-form-urlencoded, multipart/form-data, या text/plain के अलावा किसी अन्य चीज़ पर सेट करते हैं एक प्रीफलाइट अनुरोध ट्रिगर करेगा। " क्या मैं बस इतना कह सकता हूं कि यह सब मूर्खतापूर्ण लगता है - इस पागलपन के लिए औचित्य कहां है? – Marc