我目前正在构建一个利用Angular的httpClient将数据发布到api的Angular应用。该帖子在IE11之外的其他浏览器中也能正常工作。在IE11中发布帖子时,我收到403,经过一些挖掘后发现IE11正在删除我的请求标头,其中包含API所需的密钥。如果我刷新页面,则由于某种原因,该应用将重新加载并进行API调用。在下面的代码示例中,“ securityKey”键是删除的内容。
我尝试添加其他键,以查看是否只是导致该问题的特定键,但是所有键似乎都被删除了。甚至内容类型也被设置为丢弃并设置为文本/纯文本。
http {
client_max_body_size 50M;
}
与其他浏览器一样,此代码应使用已定义的请求标头进行发布,以便发送安全密钥。
更新
我的代码已更新至以下内容,但现在尚未设置x-api-key。此代码解决了以下问题:修复了内容类型设置不正确的事实,从而导致出现类似CORS的错误。现在的问题是x-api-key的标题键已删除或未设置。这仅在第一次加载页面时发生,刷新后,标题设置就很好了。
return this.httpClient.post(
`${baseUrl}/test`,
request,
{
headers: {
'Content-Type': 'application/json',
'securityKey': 'foobar',
},
},
);
答案 0 :(得分:0)
根据您上面的评论,听起来像是"preflight" request。
对于可能对服务器数据产生副作用的HTTP请求方法(尤其是对于
GET
以外的HTTP方法,或POST
在某些MIME类型下的使用),浏览器将发送“飞行前”请求。然后,在服务器“批准”后,它将使用实际的HTTP请求方法发送实际的请求。
application/json
不是simple request,因此它可能会触发“预检”。您可以尝试使用代码来检查返回的数据类型,并在IE中发出第二个请求。