我正在向跨域资源发出一个简单的CORS请求。我假设这是一个带参数的POST请求,它将被分类为一个简单的CORS请求,因此不需要进行飞行前调用。但事实并非如此。

另外,不幸的是,由于我使用的是.NET Web API,因此必须在Post请求中的查询字符串上传递任何简单的数据类型。

使用 Angular $ http进行发布。

选项:

Request URL:http://api.local.foundation.com/account/LoginAutomatically?key=null
Request Method:OPTIONS
Status Code:200 OK
Request Headersview source
Accept:*/*
Accept-Encoding:gzip,deflate,sdch
Accept-Language:en-US,en;q=0.8
Access-Control-Request-Headers:accept, content-type
Access-Control-Request-Method:POST
Cache-Control:no-cache
Connection:keep-alive
Host:api.local.foundation.com
Origin:http://www.local.foundation.com
Pragma:no-cache
Referer:http://www.local.foundation.com/
User-Agent:Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.63 Safari/537.36
Query String Parametersview sourceview URL encoded
key:null

邮政:
Request URL:http://api.local.foundation.com/account/LoginAutomatically?key=null
Request Method:POST
Status Code:200 OK
Request Headersview source
Accept:application/json, text/plain, */*
Accept-Encoding:gzip,deflate,sdch
Accept-Language:en-US,en;q=0.8
Cache-Control:no-cache
Connection:keep-alive
Content-Length:0
Content-Type:application/json;charset=utf-8
Host:api.local.foundation.com
Origin:http://www.local.foundation.com
Pragma:no-cache
Referer:http://www.local.foundation.com/
User-Agent:Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.63 Safari/537.36
Query String Parametersview sourceview URL encoded
key:null

最佳答案

由于您的请求的Content-Type,因此您的CORS请求已被预检。 “application/json”使您的请求成为“非简单的” CORS请求,因此该请求被预检了。如果您的请求的Content-Type是“text/plain”,则在这种情况下将不会被预检。

关于javascript - 为什么这个简单的CORS请求进行飞行前选项检查,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20913107/

10-11 22:25
查看更多