दिलचस्प पोस्ट
PHP कर्ल – कुकीज़ समस्या जावास्क्रिप्ट अपरिवर्तनीय चर को समझना विज़ुअल स्टूडियो में असेंबली संदर्भ कार्य की "विशिष्ट संस्करण" की संपत्ति कैसे ठीक है? पृष्ठ का उपयोग करते हुए सेलेनियम वेबड्राइवर (सेलेनियम 2) में पृष्ठ ऊपर या नीचे स्क्रॉल करें पाइप के साथ कई पॉपेन कमांड लिंक करें jquery 3.0 url.indexOf त्रुटि अन्य बिंदु (2 डी) के बारे में एक बिंदु घूम रहा है सशर्त-और और सशर्त-या ऑपरेटरों के जावा आवधिक असाइन संस्करण क्यों नहीं हैं? (&& =, || =) एक सूचक को एक स्वत: चर में लौटाना पायथन में एक ट्राई कैसे बनाएं जीज़िप के जावास्क्रिप्ट कार्यान्वयन फ़ोकस पर नारंगी रूपरेखा को अक्षम करें लारेवेल के साथ मैत्री प्रणाली: बहुत से रिश्ते के लिए कई पायथन सूची में स्ट्रिंग मान ढूंढें और बदलें एक चार * कॉन्स्ट स्ट्रिंग को संशोधित करना

Preflight और रीडायरेक्ट के साथ CORS अनुरोध: अस्वीकृत समाधान?

मैं एक एपीआई डिजाइन कर रहा हूं जो उपयोगकर्ता को टोकन (प्रमाणीकरण) के द्वारा प्रमाणित करने की अनुमति देता है और जिसमें उसी डोमेन के भीतर रीडायरेक्ट होते हैं अब, एक अन्तर्निहित अनुरोध के लिए एक अंत बिंदु है जो 303 देता है,

GET /documents/123 --> 303 redirect to `/documents/abc` GET /documents/abc --> 200 

सब कुछ अच्छी तरह से बाहर काम करता है

आइए उसी समापन बिंदु पर प्रमाणीकृत अनुरोध करते हैं जहां Authorization शीर्षलेख भेजा जाता है। यह एक प्रीफ़्लोटेड अनुरोध का अनुरोध करता है और ब्राउज़र प्रीफ़लाइट ऑप्शन अनुरोध करता है, अर्थात

 OPTIONS /documents/123 --> 204 (everything okay, please proceed) GET /documents/123 --> 303 redirect to `/documents/abc` 

इस बिंदु पर, /documents/abc पर वास्तविक संसाधनों को टालने के बजाय, ब्राउज़र की पैदावार

 XMLHttpRequest cannot load http://localhost:8000/people/username/nschloe. The request was redirected to 'http://localhost:8000/people/YDHa-B2FhMie', which is disallowed for cross-origin requests that require preflight. 

यह व्यवहार मानक के अनुसार है:

7.1.5 प्रीफलाइट के साथ क्रॉस-ऑरिजन अनुरोध

अगर प्रतिक्रिया में एक HTTP स्थिति कोड है जो 2xx श्रेणी में नहीं है

नेटवर्क त्रुटि चरण लागू करें

इसका अर्थ यह है कि प्रमाणीकृत संसाधनों के लिए कोई रीडायरेक्ट नहीं कर सकता , भले ही रीडायरेक्ट उसी डोमेन ( localhost ) पर हो।

क्या यह वाकई सच हो सकता है? क्या कोई सामान्य समाधान है?

वेब के समाधान से एकत्रित समाधान "Preflight और रीडायरेक्ट के साथ CORS अनुरोध: अस्वीकृत समाधान?"

मूल मानक एक सफल कॉरस प्रीफलाइट के बाद रीडायरेक्ट को रोकता है। § 7.1.5.3 का हवाला देते हुए :

यह वास्तविक अनुरोध है अनुरोध करते समय नीचे दिए अनुरोध नियमों का अनुरोध करें और पालन करें।

  • यदि प्रतिक्रिया में 301, 302, 303, 307, या 308 का एक HTTP स्थिति कोड है, कैश और नेटवर्क त्रुटि चरण लागू करें।

आपके प्रयासों (धन्यवाद!) के कारण, 4 अगस्त को, मानक को सफल कॉरस प्रीफलाइट चेक के बाद पुनर्निर्देशित करने के लिए अपडेट किया गया था।

जब तक ब्राउज़र पकड़ नहीं लेते हैं, तब तक केवल एक ही संभव विकल्प एक या एक संयोजन दिखता है:

  1. समस्या केवल सरल अनुरोधों के लिए रीडायरेक्ट करता है
  2. "प्रक्सी" के रूप में Location शीर्ष पर अपने स्वयं के URL के साथ, 305 रीडायरेक्ट जारी करें। सीमित ब्राउज़र समर्थन के लिए तैयार रहें, क्योंकि 305 को बहिष्कृत किया गया है।
  3. नकली "पुनर्निर्देश" करें:
    • meta refresh और / या जावास्क्रिप्ट Location परिवर्तन के साथ HTML लौटाएं।
    • रिटर्न एचटीएमएल जिसमें एक व्यूपोर्ट-फ़िलिंग iframe है जो रीडायरेक्ट लक्ष्य को iframe के स्रोत के रूप में दर्शाता है।
    • सामग्री को एक्सेस करने के लिए उस उपयोगकर्ता को क्लिक करने के लिए एक लिंक प्रदर्शित करें