/ / Mám chybu 400 pre predletové možnosti žiadosti o token CORS z WebAPI založeného na OWIN - google-chrome, asp.net-web-api, cors, owin

Chyba chyby 400 pre predletové voľby Požiadavka tokenu CORS z WebAPI - google-chrome, asp.net-web-api, cors, owin založená na OWIN

Je to naozaj zvláštne.

Snažil som sa urobiť požiadavku CORS na WebAPI2 (na báze OWIN), aby som získal autentifikačný token.

Vždy to zlyhá inokedy. ako 1. požiadavka zlyhá, ale 2. požiadavka prejde. A tretí zlyhá, ale štvrtý prejde.

Nechápem, prečo to fungovalo polovične.

Skontrolujem požiadavku na prehliadač (chrome).

Ten, ktorý zlyhal, vždy ide metódou OPTIONS. Ten, ktorý prešiel, vždy ide POST.

Vždy však používam metódu post s hlavičkami „Content-Type“: „application / x-www-form-urlencoded“

Takže si myslím, že otázka znie, prečo niekedy Chrome / fire fox pošlú požiadavku na kontrolu pred výstupom, ale niekedy to tak nie je.

BTW, v IE to funguje úplne dobre.

odpovede:

1 pre odpoveď č. 1

Máte pravdu, že Chrome aj FireFox používajúpožiadavka MOŽNOSTI kontroly pred výstupom. Pred vykonaním POST teda Chrome / FireFox odošle požiadavku so slovesom OPTIONS. Ak nedostane spätnú odpoveď od servera, ktorý informuje prehliadač, že má povolené odoslať požiadavku viacerých domén, zobrazí sa chyba a nasledujúci POST sa nebude zverejňovať.

Musíte povoliť MOŽNOSTI vo svojom web.config (alebo pomocou jedného z prístupov uvedených v tomto článku): http://www.asp.net/web-api/overview/security/enabling-cross-origin-requests-in-web-api

Pre web.config skúste:

<httpProtocol>
<customHeaders>
<add name="Access-Control-Allow-Origin" value="*" />
<add name="Access-Control-Allow-Methods" value="GET, POST, OPTIONS,PUT"/>
<add name="Access-Control-Allow-Headers" value="Content-Type, Accept"/>
</customHeaders>

IE prijíma štandardy CORS pomaly, takže z tohto dôvodu funguje IE dobre bez povolených MOŽNOSTÍ.