cors - CORS 上缺少 Angular 5 响应 header

标签 cors angular5 response-headers

在我的角度应用程序中,我需要从响应 header 中检索位置数据。 服务器(Nginx)配置为允许跨源并允许/公开 header 中的位置。我可以在 chrome DEV 控制台中看到这一点,但在我的 Angular 应用程序中,我没有看到标题的任何数据。

Access-Control-Allow-Origin: *
Access-Control-Allow-Headers:Location, Content-Type
Access-Control-Expose-Headers:Location, Content-Type

这是我的代码片段。

this.httpClient.post( url, {
        UserName: username,
        Password: password
      }
    )
      .subscribe(
        (res: Response) => {
          console.log(res.headers);
        },
        error => {console.log('Error occured::' + error);
        }
      );

console.log(res.headers) 返回未定义。

这里出了什么问题?

最佳答案

新的 HttpClient 默认情况下仅返回正文。如果您想从响应本身检索任何内容,您可以使用选项observe:

  this.httpClient.post(url, {
    UserName: username,
    Password: password
  }, {
    observe: 'response'
  })
  .subscribe(res => {
    console.log(res.headers.get('Location');
  }, error => {
    console.log('Error occured::' + error);
  });

您正在将 res 类型转换为 Response,因此 TypeScript 无法捕获您的错误。最好像我的示例中那样删除类型,以便自动正确键入。

关于cors - CORS 上缺少 Angular 5 响应 header ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48117123/

相关文章:

javascript - SoundCloud Api 重定向混淆和 Audio Api Streams

angular - 如何使用代理配置将 Angular 2 应用程序部署到 HTTP 服务器

angularjs - 如何使用 $resource 读取响应 header ?

php - HTTP 状态代码 102 缺少响应 header

heroku - Angular 2 : X-XSRF-TOKEN is not allowed by Access-Control-Allow-Headers

javascript - 在 Node.js 中允许 CORS 用于 PUT

angular - RxJS 检测订阅何时关闭

Angular 5 : Dynamic Templates

javascript - xhr.getAllResponseHeaders() 在 IPHONE Safari 浏览器中未定义

javascript - 从 Rails 设置 document.domain 的 DRY 方式