2011-06-20 7 views
6

https://app.example.com से मैं निम्नलिखित अनुरोध कर रहा हूँ:फोर्स सफारी शामिल करने के लिए jQuery में उत्पत्ति हैडर अनुरोध प्राप्त

$.get('https://api.example.com', { foo: 'bar' }) 
    .success(getSuccess) 
    .error(getError); 

यह क्रोम और फ़ायरफ़ॉक्स में ठीक काम करता है, लेकिन सफारी में नहीं। सफारी प्रीफलाइट विकल्प अनुरोध नहीं करता है या Origin: https://app.example.com शीर्षलेख शामिल नहीं करता है, इसलिए सर्वर Access-Control-Allow-Origin: https://app.example.com शीर्षलेख वापस नहीं करता है।

क्या सफारी को Origin शीर्षलेख शामिल करने या प्रीफलाइट विकल्प अनुरोध करने के लिए मजबूर करने का कोई तरीका है?

उत्तर

1

आप beforeSend ईवेंट में HTTP XHR अनुरोध में हेडर जोड़ सकते हैं।

कुछ की तरह:

$.ajax({ 
    url: 'https://api.example.com', 
    data: { foo: 'bar' }, 
    beforeSend: function(xhr) { 
    xhr.setRequestHeader("Origin", "https://app.example.com"); 
} 
}) 
.success(getSuccess) 
.error(getError); 
+4

'Origin' एक प्रतिबंधित शीर्षक है और जावास्क्रिप्ट द्वारा मैन्युअल रूप से सेट नहीं किया जा सकता। – abraham

+0

सफारी इस हेडर का समर्थन नहीं करता है लेकिन इसे मैन्युअल रूप से जोड़कर प्रतिबंधित करता है? – Variant

+0

जहां तक ​​मुझे पता है कि सभी प्रमुख ब्राउज़र मूल जोड़ने को प्रतिबंधित करते हैं। सफारी POST/DELETE अनुरोधों (और शायद अन्य) के लिए उत्पत्ति का समर्थन करता है। आदर्श रूप से कुछ "अनुरोध प्राप्त करने के लिए उत्पत्ति सक्षम करें = सत्य" विकल्प है। – abraham

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