У меня есть рабочий сайт .NET с аутентификацией и работают (Идентичность 2.0 через Owin & https://identityazuretable.codeplex.com/)Междоменного SignalR Аутентификация
Я хотел бы использовать WebSockets в первую очередь для транспортировки SignalR, а потому, что домен работает на cloudflare (бесплатный план в настоящее время не поддерживает веб-порты). Я не могу использовать SignalR в том же домене и получать веб-узлы. Поэтому, чтобы обойти эту проблему, у меня есть субдомен websockets.example.com, который не использует cloudflare, но указывает на то же приложение.
Однако теперь я хочу аутентифицировать соединения SignalR на основе их токена аутентификации форм в файле cookie. Однако куки не присылают, когда я ниже, или когда SignalR подключается к websockets.example.com
JQuery Запрос:
$.ajax({
url: "//websockets.example.com/signalr/hubs",
type: "POST",
xhrFields: {
withCredentials: true
}
});
Или:
$.connection.hub.url = '//websockets.example.com/signalr/';
$.connection.hub.start({ withCredentials: true });
заголовкам:
Accept:*/*
Accept-Encoding:gzip,deflate
Accept-Language:en-GB,en-US;q=0.8,en;q=0.6
Connection:keep-alive
Content-Length:0
Cookie:ARRAffinity=805c328533b85a33c6fdeb4870bd41f00e05fd898b5d784f2635656f9525466b
Host:websockets.example.com
Origin:http://example.com
Referer:http://example.com/Page
Ответ:
Access-Control-Allow-Credentials:true
Access-Control-Allow-Origin:https://example.com
EDIT: Owin Config:
app.Map("/signalr", map =>
{
map.UseCors(new CorsOptions
{
PolicyProvider = new CorsPolicyProvider
{
PolicyResolver = context =>
{
var corsPolicy = new CorsPolicy
{
AllowAnyHeader = true,
AllowAnyMethod = true,
SupportsCredentials = true,
AllowAnyOrigin = false,
};
corsPolicy.Origins.Add("http://example.com");
corsPolicy.Origins.Add("http://www.example.com");
corsPolicy.Origins.Add("http://websockets.example.com");
corsPolicy.Origins.Add("https://websockets.example.com");
corsPolicy.Origins.Add("https://example.com");
corsPolicy.Origins.Add("https://www.example.com");
return Task.FromResult(corsPolicy);
}
}
});
map.RunSignalR();
});
пытаются добавить к ответу: Access-Control-Allow-Methods: * Access-Control-Allow-Headers: * –
@MajoB Я не думал об этом, но мой Owin конфигурации должен делать это ... – Spike