IE11丢弃请求标头XHR

时间:2019-07-19 13:09:28

标签: angular xmlhttprequest http-headers internet-explorer-11

我目前正在构建一个利用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',
                },
            },
        );

1 个答案:

答案 0 :(得分:0)

根据您上面的评论,听起来像是"preflight" request

  

对于可能对服务器数据产生副作用的HTTP请求方法(尤其是对于GET以外的HTTP方法,或POST在某些MIME类型下的使用),浏览器将发送“飞行前”请求。然后,在服务器“批准”后,它将使用实际的HTTP请求方法发送实际的请求。

application/json不是simple request,因此它可能会触发“预检”。您可以尝试使用代码来检查返回的数据类型,并在IE中发出第二个请求。