Problèmes avec SignalR et de la Croix de Domaine de demandes de Chrome 27

EDIT: C'est apparemment un problème uniquement en Chrome, il fonctionne très bien dans FF et IE

Version de Chrome: 27.0.1453.116

J'ai une simple JS/HTML site sur localhost:13371, et j'essaye d'accéder à un SignalR hub à localhost:13371.

Lorsque la demande est faite, j'obtiens l'erreur suivante:

XMLHttpRequest ne peut pas charger http://localhost:13370/signalr/hubs/negotiate?_=1372338722032. Origine http://localhost:13371 n'est pas autorisé par Access-Control-Allow-Origin.

Ce que j'ai déjà essayé:

  • L'activation de la Croix-Domaine sur SignalR sur Application_Start:
    RouteTable.Routes.MapHubs(new HubConfiguration { EnableCrossDomain = true });
  • L'activation de la Croix-Domaine du Web.Config de la SignalR serveur:
    <system.webServer>
       <httpProtocol>
         <customHeaders>
           <clear />
           <add name="Access-Control-Allow-Origin" value="*" />
           <add name="Access-Control-Allow-Methods" value="*" />
           <add name="Access-Control-Allow-Headers" value="*" />
         </customHeaders>
       </httpProtocol>
    </system.webServer>
  • De la configuration de l'url de connexion sur signalr du hub en JavaScript:
    $.connection.hub.url = 'http://localhost:13370/signalr/hubs';
  • L'activation de la SCRO en jQuery:
    $.support.cors = true;
  • Réglage de l'en-tête de réponse manuellement dans Application_BeginRequest:
    protected void Application_BeginRequest(object sender, EventArgs e)
    {
        HttpContext.Current.Response.AddHeader("Access-Control-Allow-Origin", "*");
    
        if (HttpContext.Current.Request.HttpMethod == "OPTIONS")
        {
            //These headers are handling the "pre-flight" OPTIONS call sent by the browser
            HttpContext.Current.Response.AddHeader("Access-Control-Allow-Methods", "GET, POST, PUT, DELETE");
            HttpContext.Current.Response.AddHeader("Access-Control-Allow-Headers", "*");
            HttpContext.Current.Response.AddHeader("Access-Control-Max-Age", "1728000");
            HttpContext.Current.Response.End();
        }
    }

Rien de ce qui précède, ni aucune combinaison de ceux-ci a travaillé.

Informations supplémentaires:

  • Les deux sites sont en cours d'exécution dans les services IIS sur Windows 7
  • La SignalR site est en cours d'exécution sur le port 13370 dans le cadre d'un MVC 4 site sous .NET 4.0.
  • Le JS/site HTML est un simple serveur web sur le port 13371, pas de code managé.
  • La SignalR site va certainement répondre à des demandes directes de la part du navigateur pour la ressource en question.
  • SignalR version 1.1.2
Avez-vous essayez de lire asp.net/signalr/overview/hubs-api/...?

OriginalL'auteur Ben Lesh | 2013-06-27