Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/haskell/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angular 为什么没有返回我的边缘HTTP响应头?_Angular_Http_Http Headers_Microsoft Edge_Angular8 - Fatal编程技术网

Angular 为什么没有返回我的边缘HTTP响应头?

Angular 为什么没有返回我的边缘HTTP响应头?,angular,http,http-headers,microsoft-edge,angular8,Angular,Http,Http Headers,Microsoft Edge,Angular8,我在Edge中运行Angular 8应用程序时遇到问题(而所有其他浏览器都工作正常) 在发出登录请求时,我通过响应头收到一些值(token、correlationid、refresh token),但当我尝试在应用程序中捕获它们时,它们返回null,这对我来说非常奇怪 我一直在检查,没有CORS策略错误或警告,即使在网络选项卡中,我也可以清楚地看到登录HTTP调用返回200OK,并且这些头都存在 更奇怪的是,其中一个值确实返回了,而其他值没有返回,因此我的登录流失败,因为我无法验证所有数据是否正

我在Edge中运行Angular 8应用程序时遇到问题(而所有其他浏览器都工作正常)

在发出登录请求时,我通过响应头收到一些值(token、correlationid、refresh token),但当我尝试在应用程序中捕获它们时,它们返回null,这对我来说非常奇怪

我一直在检查,没有CORS策略错误或警告,即使在网络选项卡中,我也可以清楚地看到登录HTTP调用返回200OK,并且这些头都存在

更奇怪的是,其中一个值确实返回了,而其他值没有返回,因此我的登录流失败,因为我无法验证所有数据是否正确返回

有人知道为什么会这样吗?我已经读到,你不应该包括下划线符号,这也是不是我的情况

这是我得到的图片

下面是我如何尝试获取headers响应值:

return this.http.post('MYENDPOINT/login', null, { headers: headers, observe: 'response' })
  .pipe(
    tap(res => {
      console.log('getting from response headers for key hcs-token: ', res.headers.get('hcs-token));
      console.log('getting from response headers for key HCS-TOKEN: ', res.headers.get('HCS-TOKEN));
      console.log('getting from response headers for key hcs-refresh-token: ', res.headers.get('hcs-refresh-token'));
      console.log('getting from response headers for key HCS-REFRESH-TOKEN: ', res.headers.get('HCS-REFRESH-TOKEN'));
      console.log('getting from response headers for key hcs-correlation-id: ', res.headers.get('hcs-correlation-id'));
      console.log('getting from response headers for key HCS-CORRELATION-ID: ', res.headers.get('HCS-CORRELATION-ID'));
    //some extra logic....

    }));
}

我猜你是在多个标题中发送这些,并且有一个标题,这意味着你只能得到第一个标题

因此,如果您的服务器正在发送:

Access-Control-Expose-Headers: hcs-token
Access-Control-Expose-Headers: hcs-refresh-token
Access-Control-Expose-Headers: hcs-correlation-id
然后将其更改为此,以解决Edge的问题(并且仍然可以在其他浏览器中使用):

它们的意思应该是一样的,但是由于前面提到的bug,Edge没有这样看


我很欣赏你的截图,他们在一行上,但不确定截图来自何处,是否自动将多行合并为一行,或者是否准确显示了返回的内容?最好使用命令行工具来确认?或者显示您的服务器端代码。

请理解,EDGE或IE不够智能,无法纠正语法或流问题,而chrome和FF是,请共享您的代码以提供帮助。@user7417866已用代码更新我支持Barry Pollard的回答。此外,您可以检查是否有正确的Nginx配置。你可以参考。你可以参考下面的评论接受的答案和op有相同的问题。你也可以检查一下你是否试过。
Access-Control-Expose-Headers: hcs-token, hcs-refresh-token, hcs-correlation-id