У меня есть служба ASP.NET Web API 2. И несколько клиентских (угловых) приложений разговаривают с этой службой. приложения и службы публикуются на разных поддоменов, как следующее:Ошибка CORS на кнопке браузера
service.mydomain.com
app1.mydomain.com
app2.mydomain.com
Я использовал Microsoft.AspNet.WebApi.Cors - пакет NuGet для включения CORS, она работает нормально, за исключением одного сценария: Когда пользователь открывает одно приложение (app1.mydomain.com). Затем переходит к другому (app2.mydomain.com). Затем нажмите кнопку назад. follwoing CORS Ошибка:
The 'Access-Control-Allow-Origin' header has a value 'http://app2.mydomain.com' that is not equal to the supplied origin.
Origin 'http://app1.mydomain.com' is therefore not allowed access
я настроил Microsoft.AspNet.WebApi.Cors - NuGet пакет следующим образом:
public static void Register(HttpConfiguration config)
{
var cors = new EnableCorsAttribute(
//to-do allow cross domains for all maarif.com sites
origins: "*", //and also tried "http://app1.mydomain.com, http://app2.mydomain.com" gives same result
headers: "*",
methods: "*") {SupportsCredentials = true};
config.EnableCors(cors);
}
Я проследил значения заголовка Origin на сервере. Я поставил следующий код в службы «global.asax»:
protected void Application_BeginRequest()
{
var origin = HttpContext.Current.Request.Headers["Origin"];
if (origin != null)
{
HttpContext.Current.Response.AddHeader("Access-Control-Allow-Origin", origin);
HttpContext.Current.Response.AddHeader("Access-Control-Allow-Headers", "*");
HttpContext.Current.Response.AddHeader("Access-Control-Allow-Methods", "*");
HttpContext.Current.Response.AddHeader("Access-Control-Allow-Credentials", "true");
}
}
Проблема происходит, когда пользователь нажимает кнопку назад форму «app2.mydomain.com» до «app1.mydomain.com», происхождение отправлено с запросом «app2.mydomain.com», и вот что такое услуга позволяет получить доступ к: HttpContext.Current.Response.AddHeader("Access-Control-Allow-Origin", 'app2.mydomain.com');
Любой путь вокруг этого?
Обратите внимание, что я не могу поместить '*', потому что запросы аутентифицированы.
На самом деле я использую, проект Web Api использует файл 'global.asax' не 'StratUp.cs' Я пытался использовать HttpContext.Current.Response.AddHeader («Access-Control-Allow-Origin», «app1.mydomain.com, app2.mydomain. ком "); – yass
нормально, как вы предпочитаете ... но вы пытались сделать то, что я вам предлагаю? .. это работает? –
Я так выразился: HttpContext.Current.Response.AddHeader («Access-Control-Allow -Origin», «app1.mydomain.com, app2.mydomain.com»); но он не работает, он не принимает несколько доменов в значении заголовка, ошибка говорит о том, что он должен быть одним доменом – yass