मेरे पास एक विंडोज सेवा के भीतर होस्ट की गई डब्ल्यूसीएफ आरईएसटी सेवा है और मैं प्रत्येक प्रतिक्रिया के साथ एक्सेस-कंट्रोल-ऑर्डर-ओरिजिनल HTTP हेडर (CORS के हिस्से के रूप में परिभाषित) भेजना चाहता हूं।डब्ल्यूसीएफ आरईएसटी सेवाओं के भीतर सीओआरएस समर्थन
मेरे प्रयास किया समाधान एक IDispatchMessageInspector कार्यान्वयन के भीतर निम्नलिखित की तरह कुछ है करने के लिए किया गया था:
public void BeforeSendReply(ref Message reply, object correlationState)
{
var httpResponse = reply.Properties["httpResponse"] as HttpResponseMessageProperty;
if (httpResponse != null)
{
// test of CORS
httpResponse.Headers["Access-Control-Allow-Origin"] = "*";
}
}
आम तौर पर यह काम करेगा, लेकिन दुर्भाग्य से मेरी सेवा भी HTTP basic authorization का उपयोग करता है, जब एक अनुरोध प्राधिकरण के बिना में आता है जिसका मतलब है हेडर, डब्ल्यूसीएफ स्वचालित रूप से 401 प्रतिक्रिया भेजता है जो प्रमाण-पत्रों के लिए पूछता है। दुर्भाग्यवश डब्ल्यूसीएफ इस शुरुआती एक्सचेंज के दौरान मेरे आईडीस्पैच मैसेज इंस्पेक्टर को कॉल नहीं करता है, इसलिए एक्सेस-कंट्रोल-ऑर्डर-ऑरिजन हेडर प्रारंभिक एक्सचेंज में नहीं जोड़ा जाता है।
समस्या तब होती है जब मैं ब्राउज़र से सेवा को कॉल करने का प्रयास करता हूं। सीओआरएस निर्दिष्ट करता है कि क्रॉस-मूल अनुरोधों को केवल तभी अनुमति दी जानी चाहिए जब मूल डोमेन एक्सेस-कंट्रोल-अनुमति-उत्पत्ति प्रतिक्रिया शीर्षलेख (* सभी डोमेन से मेल खाता है) में सूचीबद्ध डोमेन से मेल खाता हो। दुर्भाग्यवश जब ब्राउज़र एक्सेस-कंट्रोल-ऑब्जेक्ट-हेडर हेडर के बिना शुरुआती 401 प्रतिक्रिया देखता है, तो यह एक्सेस को रोकता है (same origin policy के अनुसार)।
क्या डब्ल्यूसीएफ द्वारा स्वचालित रूप से भेजे गए प्रारंभिक 401 प्रतिक्रिया में कोई शीर्षलेख जोड़ने का कोई तरीका है?
क्या आपने कभी इसके साथ कहीं भी जाना है? –