CORS no problema do IIS com credenciais e curinga em Access-Control-Allow-Origin

Eu herdei um site bastante básico que fornece dados e lida com algumas conexões de soquete. Ele está executando o NodeJS atrás do IIS usando o iisnode como uma ponte. Tudo isso funciona bem do ponto de vista de "servir páginas normais".

Parte do problema é que as conexões reais com o servidor são provenientes de clientes de desktop, nos quais o conteúdo é carregado através de um aplicativo diferente como um gadget e de partes potencialmente variáveis e variáveis da rede, dispositivos móveis etc. etc. número desconhecido de domínios do cliente.

Eu já configurei a origem Access-Control-Allow como * para apenas abrir as portas do celeiro, mas agora estou recebendo o seguinte erro no cliente:

11: 29: 57.668 Solicitação de origem cruzada bloqueada: a mesma política de origem não permite a leitura do recurso remoto em ‘http: //server/socket.io/? EIO = 3 & transport = polling & t = 1486150196479-0' (Motivo: a credencial não é suportada se o cabeçalho do CORS 'Acesso-controle-permitir-origem' for '*'). 1 (desconhecido)

Eu tentei definir explicitamente as Access-Control-Allow-Credentials como false (assim como true, além de deixar totalmente de fora), mas nenhuma das minhas tentativas me permitiu superar isso.

Os cabeçalhos de resposta bruta se parecem com isso atualmente:

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

Parece que não consigo entender depois de ver muitos sites e artigos do CORS nos últimos dias por que ainda está reclamando de credenciais - e mais especificamente, como contornar isso?

Obrigado!

ATUALIZAÇÃO 06-02-2017

O código do cliente não é muito empolgante. Como o servidor está NodeJS atrás do IIS, tudo o que realmente estou fazendo é implementar uma conexão de soquete:

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

Isso funciona dentro do mesmo domínio.

Eu também estive pesquisando mais com base nos comentários de sideshowbarker que me levaram a issoartigo Existem algumas etapas extras para adicionar as variáveis e outras coisas para que a peça funcione.

Meu applicationHost.config atualmente contém esta seção:

<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>

e meu web.config está aqui:

<?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>

no outboundRules, atualmente tenho a linha de ação type = "Rewrite" comentada porque, quando eu habilito isso, gera um erro.

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 

Os logs de solicitação com falha não são muito úteis, eles mostram o seguinte para o aviso:

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: 

questionAnswers(3)

yourAnswerToTheQuestion