मुझे लगता है कि ASP.NET वेब एपीआई के साथ बनाया गया एक API साथ सूचना का आदान एक कोणीय एप्लिकेशन बनाने रहा हूँ के साथ preflight विकल्प अनुरोध बचना 2. मैं प्रत्येक अनुरोध है कि प्रमाणीकरण की आवश्यकता के साथ एक Authorization
हैडर भेजकर बेसिक प्रमाणीकरण का उपयोग कर रहा कोणीय टुकड़ा:CORS
$http.defaults.headers.common['Authorization'] = authHeader;
अनुरोध:
Accept:application/json, text/javascript
Accept-Encoding:gzip, deflate, sdch
Accept-Language:en-US,en;q=0.8
Access-Control-Max-Age:1728000
Authorization:Basic [base64 encoded credential couplet here]
Connection:keep-alive
DNT:1
Host: blah.com
Origin:http://localhost:9000
Referer:http://localhost:9000/
User-Agent:Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_3) AppleWebKit/53
यह सब ठीक है, लेकिन एक preflight OPTIONS
अनुरोध प्रत्येक GET
या POST
अनुरोध के साथ भेजा जाता है। यह मुख्य रूप से आवेदन की अनुमानित गति को प्रभावित कर रहा है। मैंने सीओआरएस "सरल अनुरोध" पर बहुत सी पढ़ाई की है और ऐसा लगता है कि ड्रेडेड प्रीफलाइट OPTIONS
से बचने के लिए अनुरोध है कि मेरे अनुरोधों में कोई कस्टम हेडर जोड़ने से बचें। मैंने text/plain
के Content-Type
भेजने जैसे कई अन्य सामानों की कोशिश की है, लेकिन ऐसा लगता है कि प्राधिकरण शीर्षलेख वह चीज है जो सीओआरएस "सरल अनुरोध" आवश्यकता का उल्लंघन कर रही है।
तो ऐसा लगता है कि मुझे टोकन आधारित प्रमाणीकरण/प्रमाणीकरण का उपयोग करने के लिए एपीआई को स्थानांतरित करना पड़ सकता है। प्रीफलाइट अनुरोधों से बचने के लिए, ऐसा लगता है कि मुझे क्वेरी स्ट्रिंग में टोकन रखना होगा। यह ठीक है क्योंकि यह केवल एक छोटा आंतरिक वेब ऐप है जिसे वैसे भी कुछ उपयोगकर्ताओं द्वारा एक्सेस किया जाएगा। मैं नियंत्रक प्रतिक्रियाओं पर कैशिंग लागू करने का इरादा रखता हूं। चूंकि नियंत्रक कार्रवाई के प्रत्येक अनुरोध के पास वर्तमान में प्रमाणीकृत उपयोगकर्ता के आधार पर क्वेरीस्ट्रिंग में एक अलग टोकन होगा, क्या यह बेकार कैशिंग प्रदान करेगा?
तो:
- मैं कैसे
- तो
1.)
संभव नहीं है (यदि सभी संभव कस्टम प्राधिकरण हेडर का उपयोग करके) preflight अनुरोध से बचने के है, और मैं आधारित प्रमाणीकरण टोकन के लिए ले जाते हैं, मैं नहीं कर सकेंगे नियंत्रक क्रियाओं के लिए कैश एपीआई प्रतिक्रिया - प्रीफलाइट अनुरोधों से बचने के लिए सबसे व्यापक रूप से उपयोग किए जाने वाले तरीकों क्या हैं लेकिन उपयोगकर्ताओं को सुरक्षित रूप से लेखित करने के लिए भी?
nb मुझे पता है कि इतना और कहीं और इस बारे में वेब पर पर अन्य धागे के एक जोड़े हैं, लेकिन उनमें से कोई भी है कि क्या यह संभव है GET
और POST
के लिए preflight अनुरोध से बचने के लिए पर एक निश्चित जवाब प्रदान करने के लिए करते हैं कस्टम HTTP
प्राधिकरण शीर्षलेख का उपयोग करते समय।
1.) सभी ब्राउज़रों और HTTP विधियों में जितना संभव हो अभी तक नहीं है: https://developer.mozilla.org/en-US/docs/Web/HTTP/Access_control_CORS#Preflighted_requests – tyler
आप का उपयोग करने के लिए सक्षम होना चाहिए [XMLHttpRequest withCredentials] (https://developer.mozilla.org/en-US/docs/Web/HTTP/Access_control_CORS#Requests_with_credentials) प्राधिकरण कुकी के साथ एक गैर-प्रीफलाइट अनुरोध भेजने के लिए। – dave