Это не фактический ответ на вопрос.

следовал довольно простой сайт, который обслуживает данные и обрабатывает некоторые сокетные соединения. Это работает NodeJS позади IIS, используя iisnode как мост. Это все работает нормально с точки зрения "обслуживать нормальные страницы".

Частично проблема заключается в том, что фактические подключения к серверу исходят от настольных клиентов, где контент загружается через другое приложение в виде гаджета, а также от потенциально изменяющихся и меняющихся частей сети, мобильных устройств и т. Д., Т. Е. неизвестное количество клиентских доменов.

Я уже установил Access-Control-Allow origin на *, чтобы просто открыть двери сарая, но теперь получаю следующую ошибку в клиенте:

11: 29: 57.668 Запрос перекрестного источника заблокирован: одна и та же политика происхождения запрещает чтение удаленного ресурса в ‘HTTP: //server/socket.io/ EIO = 3 & транспорт = опроса и т = 1486150196479-0». (Причина: учетные данные не поддерживаются, если заголовок CORS ‘Access-Control-Allow-Origin’ равен ‘*’). 1 (неизвестно)

Я пытался явно установить для Access-Control-Allow-Credentials значение false (равно как и true, а также полностью исключить его), но ни одна из моих попыток не позволила мне преодолеть это.

В настоящее время необработанные заголовки ответа выглядят так:

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

Похоже, я не могу разобраться после просмотра МНОГО сайтов и статей CORS за последние несколько дней, почему он все еще жалуется на учетные данные - и, более конкретно, как мне обойти это?

Спасибо!

ОБНОВЛЕНИЕ 2017-02-06

Код клиента не очень захватывающий. Так как сервер находится за IIS позади IIS, все, что я действительно делаю для этого, реализует соединение через сокет:

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

Это работает из одного домена.

Я также делал еще кое-какие раскопки, основываясь на комментариях SideShowBarker, которые привели меня к этомустатья Есть несколько дополнительных шагов, чтобы добавить переменные, и некоторые другие вещи, чтобы заставить этот кусок работать.

Мой 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>

в outboundRules у меня в настоящее время есть строка закомментированного действия type = "Rewrite", потому что, когда я включаю это, он выдает ошибку

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: 

Ответы на вопрос(3)

Ваш ответ на вопрос