【发布时间】:2018-01-29 05:57:24
【问题描述】:
我尝试向我的 REST API 发出 POST 请求。这是代码 sn-p(使用 AngularJS):
$http({
method: 'POST',
url: url,
data: reqBody,
headers: {
'content-type': 'application/json'
}
})
.then(function (response) {...})
.catch(function (error) {...});
根据this article,是因为HTTP头
“内容类型”:“应用程序/json”
浏览器得出结论,它必须发出一个“不简单”的 HTTP 请求,该请求需要与服务器握手(HTTP 选项请求将在实际 HTTP 请求之前发送)。
Chrome 处理请求就像一个魅力,但 IE(在我的例子中是 11 个)失败并显示以下消息:
问题是,HTTP 选项响应包含浏览器处理实际 HTTP 请求所需的一切。
【问题讨论】:
-
POST 和 OPTIONS请求中是否存在标头?
-
@SergiuParaschiv 我真的不知道 IE POST 请求中是否存在标头,因为它永远不会到达那里。但是,我检查了 Chrome POST 标头,它们就位(POST screenshot in Chrome)。
-
在我的情况下,我使用的是 IE11(Windows 10 家庭版),是的,所有带有 url “long”(不同类型搜索参数的串联)的 OPTIONS 请求都失败了。如果我删除搜索参数(保留 getAll 标准),则 OPTIONS 请求(在 GET 之前)有效。所以这是由于URL的长度?为什么?我该如何解决这个愚蠢的问题?提前致谢。
标签: javascript angularjs http internet-explorer cors