真的很奇怪 .
我试图向WebAPI2(基于OWIN)发出CORS请求以获取身份验证令牌 .
它总是每隔一段时间都失败 . 像第一个请求失败,但第二个请求将通过 . 而第3次失败,但第4次将失败 .
我不明白为什么它工作了一半的时间 .
我检查浏览器请求(chrome) .
失败的人总是通过OPTIONS方法 . 经历过的人总是通过POST .
但我总是使用 Headers 'Content-Type'的post方法:'application / x-www-form-urlencoded'
所以我想这个问题是为什么Chrome / fire fox有时会发送预检请求,但有时却没有 .
顺便说一句,它在IE中完全正常 .
1 回答
你是正确的,Chrome和FireFox都使用预检OPTIONS请求 . 因此,在执行POST之前,Chrome / FireFox会使用OPTIONS动词发送请求 . 如果它没有从服务器收到回复,告知浏览器允许发送跨域请求,那么您将收到错误,后续POST将不会发布 .
您必须在web.config中启用OPTIONS(或使用本文中列出的方法之一):http://www.asp.net/web-api/overview/security/enabling-cross-origin-requests-in-web-api
对于web.config,请尝试:
IE在采用CORS标准方面进展缓慢,因此IE在没有启用OPTIONS的情况下工作正常 .