Tak, wiem, o czym myślisz - kolejne pytanie CORS-a, ale tym razem jestem zaskoczony.
Na początek rzeczywisty komunikat o błędzie:
XMLHttpRequest nie może załadować http: //localhost/Foo.API/token . Wartość nagłówka „Access-Control-Allow-Origin” w odpowiedzi nie może być symbolem wieloznacznym „*”, gdy tryb poświadczeń żądania to „include” . Dlatego źródło „ http: // localhost: 5000 ” nie ma dostępu. Tryb poświadczeń żądań inicjowanych przez XMLHttpRequest jest kontrolowany przez atrybut withCredentials.
Nie jestem pewien, co oznacza tryb poświadczeń „dołączanie” ?
Kiedy więc wykonuję żądanie w listonoszu, nie ma takiego błędu:
Ale kiedy uzyskuję dostęp do tego samego żądania za pośrednictwem mojej aplikacji internetowej angularjs, jestem zaskoczony tym błędem. Oto moje żądanie / odpowiedź angualrjs. Jak zobaczysz, odpowiedź brzmi OK 200
, ale nadal otrzymuję błąd CORS:
Prośba i odpowiedź Fiddlera:
Poniższy obraz przedstawia żądanie i odpowiedź z frontonu internetowego do interfejsu API
Na podstawie wszystkich innych postów, które przeczytałem w Internecie, wydaje się , że postępuję właściwie, dlatego nie mogę zrozumieć błędu. Na koniec, oto kod, którego używam w angualrjs (fabryka logowania):
Implementacja CORS w API - cele referencyjne:
Zastosowana metoda 1:
public static class WebApiConfig
{
public static void Register(HttpConfiguration config)
{
EnableCrossSiteRequests(config);
}
private static void EnableCrossSiteRequests(HttpConfiguration config)
{
var cors = new EnableCorsAttribute("*", "*", "*")
{
SupportsCredentials = true
};
config.EnableCors(cors);
}
}
Zastosowana metoda 2:
public void Configuration(IAppBuilder app)
{
HttpConfiguration config = new HttpConfiguration();
ConfigureOAuth(app);
WebApiConfig.Register(config);
app.UseCors(Microsoft.Owin.Cors.CorsOptions.AllowAll);
app.UseWebApi(config);
}
Z góry bardzo dziękuję!
*
- więc strona serwera robi źle CORS - och, a listonosz działa, ponieważ to nie jest prośba o krzyżowe pochodzenie