2014-02-10 2 views
0

Я использую signalR 0.5.3, мое веб-приложение находится по адресу localhost:1234, мой концентратор находится в localhost:5678, что означает то же имя хоста и разные порты. Оба находятся на IIS 7 Express, Windows 7.Странное поведение CORS с signalR и ASP.NET MVC 3

Когда я добавляю это к web.config моего сервера-концентратора.

<add name="Access-Control-Allow-Origin" value="*" /> 

Консоль в Google Chrome орет:

The 'Access-Control-Allow-Origin' header contains the invalid value 'http://localhost:1234, *'. 

Но когда я удалить этот конфиг, он кричит:

заголовок

Нет 'Access-Control-Allow-Origin' присутствует на запрошенный ресурс .

Я искал по всему решение, чтобы убедиться, что нигде не было, чтобы

Response.AppendHeader("Access-Control-Allow-Origin", "*"); 

или

map.UseCors(CorsOptions.AllowAll); 

Кто-нибудь знает, почему ступица сервер постоянно возвращается 2 Orgins и как сказать это сделать правильную работу?

Заранее спасибо.

ответ

1

Чтобы включить запросы SignalR междоменные с SignalR 0.5.3, вы должны вызвать MapHubs следующим образом:

RouteTable.Routes.MapHubs(new HubConfiguration() { EnableCrossDomain = true }); 

вручную манипулируя-Allow Access-Control-Origin заголовок может вызвать проблемы, так как SignalR будет установите для вас заголовок, если вы разрешаете междоменный доступ в MapHubs.

IAppBuilder.UseCors является промежуточным программным обеспечением OWIN, предоставляемым пакетом NuGet Microsoft.Owin.Cors. Это промежуточное программное обеспечение несовместимо с SignalR 0.5.3, но может использоваться с более новыми версиями SignalR, которые не имеют опции EnableCrossDomain.

Я рассматриваю некоторые другие распространенные ловушки SignalR кросс-домена в следующем ответе: Cross-domain will not work with a SignalR PersistentConnection

Смежные вопросы