node.js - प्रवेश-नियंत्रण-अनुमति-उत्पत्ति में क्रेडेंशियल्स और वाइल्डकार्ड के साथ IIS अंक में कॉरर्स




cors credentials (2)

प्रश्न उस क्लाइंट कोड को नहीं दिखाता है जो अनुरोध भेज रहा है जो उस त्रुटि का कारण बनता है, लेकिन:

ग्राहक कोड XHR या प्राप्त एपीआई (या jQuery या अन्य लाइब्रेरी का उपयोग करना चाहिए जो उनमें से एक को कॉल करता है) का उपयोग करना चाहिए, और वह कोड या तो क्रेडेंशियल गुण के साथ XHR को स्थापित कर रहा true या किसी ऑब्जेक्ट के साथ अनुरोध ऑब्जेक्ट कन्स्ट्रक्टर को कॉल कर रहा है credentials विकल्प को include करने के लिए सेट करें

जब यह मामला होता है और सर्वर प्रतिक्रिया में Access-Control-Allow-Origin: * हेडर, आपका ब्राउज़र प्रश्न में उल्लेखित त्रुटि लॉग करेगा।

इसलिए एक समाधान जावास्क्रिप्ट क्लाइंट कोड को बदलने के लिए है, इसलिए यह withCredentials XHR को withCredentials नहीं कर रहा true और credentials: 'include' साथ अनुरोध अनुरोध निर्माता को कॉल नहीं करने के लिए credentials: 'include'

एक अन्य समाधान यह है कि आपके सर्वर-साइड कोड को Origin अनुरोध-हेडर मान लेना और Access-Control-Allow-Origin -प्रतिक्रिया-हेडर मान को प्रतिध्वनित करना है।

आईआईएस के लिए, आप अपने IIS विन्यास फाइल ( Web.config या ApplicationHost.config फ़ाइल में %SystemDrive%\inetpub\wwwroot\ ) में निम्नलिखित को जोड़कर यूआरएल रीराइट मॉड्यूल के साथ ऐसा कर सकते हैं।

<configuration> 
    <system.webServer> 
        <rewrite> 
            <rules> 
                <rule name="Capture Origin Header"> 
                    <match url=".*" /> 
                    <conditions> 
                        <add input="{HTTP_ORIGIN}" pattern=".+" /> 
                    </conditions> 
                    <serverVariables> 
                        <set name="CAPTURED_ORIGIN" value="{C:0}" /> 
                    </serverVariables> 
                    <action type="None" /> 
                </rule> 
            </rules> 
            <outboundRules> 
                <rule name="Set-Access-Control-Allow-Origin for known origins"> 
                    <match serverVariable="RESPONSE_Access-Control-Allow-Origin"
                           pattern=".+" negate="true" /> 
                    <action type="Rewrite" value="{CAPTURED_ORIGIN}" /> 
                </rule> 
            </outboundRules> 
        </rewrite> 
    </system.webServer> 
</configuration>

फिर जो भी अन्य मौजूदा कोड / कॉन्फ़िग Access-Control-Allow-Origin: * सेटिंग है उसे हटा Access-Control-Allow-Origin: *

नोट: उपरोक्त चरण-दर-चरण मार्गदर्शिका में उदाहरण कॉन्फ़िग फ़ाइल का एक संशोधित संस्करण है IIS में विशिष्ट डोमेन के लिए URL रीराइट का उपयोग करके CORS को सक्षम करें

मुझे एक काफी बुनियादी साइट मिली जो डेटा को पूरा करती है और कुछ सॉकेट कनेक्शनों को संभालता है I यह आईआईएस के पीछे नोडजेएस को एक पुल के रूप में iisnode का उपयोग कर रहा है। ये सभी "सामान्य पृष्ठ सेवा" परिप्रेक्ष्य से ठीक काम कर रहे हैं

समस्या का एक हिस्सा यह है कि सर्वर से वास्तविक कनेक्शन डेस्कटॉप क्लाइंट से आ रहे हैं जहां गैजेट के रूप में एक अलग एप्लिकेशन के माध्यम से सामग्री लोड की जाती है और संभावित रूप से बदलती और नेटवर्क के विभिन्न भागों, मोबाइल उपकरणों, इत्यादि आदि से। क्लाइंट डोमेन की अज्ञात संख्या

मैं पहले से ही एक्सेस-कंट्रोल-अनुमति दें * को बर्न दरवाजे खोलने के लिए अनुमति देता हूं लेकिन अब क्लाइंट में निम्न त्रुटि मिल रही है:

11: 29: 57.668 क्रॉस-ऑरिजन अनुरोध अवरुद्ध: वही मूल नीति ' http: //server/socket.io/? ईआईओ = 3 और ट्रांसपोर्ट = मतदान और टी = 14861501 9 6479-0 ' पर रिमोट संसाधन को पढ़ने की अनुमति नहीं देती है । (कारण: क्रेडेंशियल समर्थित नहीं है यदि CORS हेडर 'एक्सेस-कंट्रोल-अनुमति-उत्पत्ति' है '*')। 1 (अज्ञात)

मैंने एक्सेस-कंट्रोल-स्वीकार्य-क्रेडेंशियल्स को स्पष्ट रूप से झूठे (साथ ही सही, साथ ही इसे पूरी तरह से बाहर छोड़ने के लिए) सेट करने का प्रयास किया है, लेकिन मेरे प्रयासों में से कोई भी मुझे यह पिछले पाने की अनुमति नहीं देता है।

कच्चे प्रतिक्रिया शीर्षलेख इस तरह दिखते हैं:

Access-Control-Allow-Credentials: false
Access-Control-Allow-Headers: Origin,Content-Type,Accept
Access-Control-Allow-Methods: GET,HEAD,PUT,POST,DELETE,OPTIONS
Access-Control-Allow-Origin: *
Cache-Control: no-cache
Content-Encoding: gzip
Content-Length: 969
Content-Type: text/html
Date: Fri, 03 Feb 2017 19:30:21 GMT
Server: Microsoft-IIS/8.5
Vary: Accept-Encoding
X-Powered-By: ASP.NET

मैं पिछले कुछ दिनों में बहुत सारे सीओआरएस साइटों और लेखों को देखने के बाद सॉर्ट नहीं कर पा रहा हूं, क्योंकि यह अभी भी प्रमाण-पत्रों के बारे में शिकायत कर रहा है - और अधिक विशेष रूप से, मैं इसके आसपास कैसे प्राप्त करूं?

धन्यवाद!

2017-02-06 अपडेट करें

क्लाइंट कोड बहुत रोमांचक नहीं है चूंकि आईआईएस के पीछे सर्वर नोडजेएस है, इसलिए मैं वास्तव में इसके लिए एक सॉकेट कनेक्शन लागू कर रहा हूं:

var socket = io('http://' + currentServer, {path: '/broadcast/socket.io', reconnection: false, forceNew: true});
socket.on('update message', function (data) {
// do some fancy things
}

यह एक ही डोमेन के भीतर से काम करता है

मैं साइडोबॉकर की टिप्पणियों के आधार पर कुछ और खुदाई कर रहा हूं जो मुझे इस लेख के लिए प्रेरित करती है चर को जोड़ने के लिए कुछ अतिरिक्त कदम हैं, और कुछ अन्य चीजें इस टुकड़े को काम करने के लिए हैं I

मेरे applicationHost.config वर्तमान में यह खंड शामिल है:

<location path="Default Web Site">
    <system.webServer>
        <rewrite>
            <allowedServerVariables>
                <add name="CAPTURED_ORIGIN" />
                <add name="RESPONSE_Access-Control-Allow-Origin" />
            </allowedServerVariables>
        </rewrite>
    </system.webServer>
</location>

और मेरे web.config यहाँ है:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
    <rewrite> 
        <rules>
            <rule name="Fail bad requests">
                <match url="." />
                <conditions>
                    <add input="{HTTP_HOST}" negate="true" pattern="localhost" />
                </conditions>
                <action type="AbortRequest" />
            </rule>
            <rule name="Capture Origin Header"> 
                <match url=".*" /> 
                <conditions> 
                    <add input="{HTTP_ORIGIN}" pattern=".+" /> 
                </conditions> 
                <serverVariables> 
                    <set name="CAPTURED_ORIGIN" value="{C:0}" /> 
                </serverVariables> 
                <action type="None" /> 
            </rule>
        </rules>
        <outboundRules> 
            <rule name="Set-Access-Control-Allow-Origin for known origins"> 
                <match serverVariable="RESPONSE_Access-Control-Allow-Origin" pattern=".+" negate="true" /> 
                <!--<action type="Rewrite" value="{C:0}" /> -->
            </rule> 
        </outboundRules> 
    </rewrite>
    <tracing>
        <traceFailedRequests>
            <add path="*">
                <traceAreas>
                    <add provider="ASP" verbosity="Verbose" />
                    <add provider="ASPNET" areas="Infrastructure,Module,Page,AppServices" verbosity="Verbose" />
                    <add provider="ISAPI Extension" verbosity="Verbose" />
                    <add provider="WWW Server" areas="Authentication,Security,Filter,StaticFile,CGI,Compression,Cache,RequestNotifications,Module,FastCGI,WebSocket" verbosity="Verbose" />
                </traceAreas>
                <failureDefinitions statusCodes="400-599" />
            </add>
        </traceFailedRequests>
    </tracing>
</system.webServer>
</configuration>

आउटबाउंड नियमों पर, मेरे पास वर्तमान में एक्शन टाइप = "रीराइट" पंक्ति टिप्पणी की गई है क्योंकि जब मैं इसे सक्षम करता हूं, तो यह एक त्रुटि को फेंकता है

HTTP Error 500.52 - URL Rewrite Module Error.

The page cannot be displayed because an internal server error has occurred.

Most likely causes:
IIS received the request; however, an internal error occurred during the processing of the request. The root cause of this error depends on which module handles the request and what was happening in the worker process when this error occurred.
IIS was not able to access the web.config file for the Web site or application. This can occur if the NTFS permissions are set incorrectly.
IIS was not able to process configuration for the Web site or application.
The authenticated user does not have permission to use this DLL.
The request is mapped to a managed handler but the .NET Extensibility Feature is not installed.

Detailed Error Information:
Module: RewriteModule 
Notification: SendResponse 
Handler: StaticFile 
Error Code: 0x80070585 

Requested URL: http://localhost:80/iisstart.htm 
Physical Path: C:\inetpub\wwwroot\iisstart.htm 
Logon Method: Anonymous 
Logon User: Anonymous 
Request Tracing Directory: C:\inetpub\logs\FailedReqLogFiles 

असफल अनुरोध लॉग अत्यधिक सहायक नहीं हैं, वे चेतावनी के लिए निम्नलिखित दिखाते हैं:

411.  -MODULE_SET_RESPONSE_ERROR_STATUS 
ModuleName: RewriteModule 
Notification: SEND_RESPONSE 
HttpStatus: 500 
HttpReason: URL Rewrite Module Error. 
HttpSubStatus: 52 
ErrorCode: Invalid index. (0x80070585) 
ConfigExceptionInfo: 

मेरे पास एक ही समस्या थी, मेरे पास एक वेबसाइट पर http और https बाइंडिंग थे- Access-Control-Allow-Origin: * इस मामले में http अनुरोध उपरोक्त त्रुटि से विफल हो जाएगा। आप http बाध्यकारी के लिए एक अलग वेबसाइट बना सकते हैं और इसे एक्सेस-कंट्रोल-अनुमति-मूल शीर्षक से हटा सकते हैं।





credentials