javascript - 无法访问 JS 中的 fetch() 响应位置 header

标签 javascript reactjs http-headers cors bluesnap

我遇到的问题已经在 stackoverflow 和其他平台( 12 )讨论过,但所提供的解决方案在我的情况下是不可能的。

我正在尝试通过 POST 请求和 fetch() 从 BlueSnap(支付处理公司 details about the exact action can be found here )获取 token 。请求正在运行,并且 token 正在通过响应中的 Location header 发送给我。 我可以通过 Chrome 开发工具看到 header 和所需的 token ,但我无法在 JS 代码中获取和使用它。该response.headers对象是空的,并且我尝试访问response.header.Location的任何方式都失败了。

我尝试过这个:

console.log(response.headers.get('location'))

还有这个

for(const header of response.headers){
  console.log(header);
}

但这似乎都不起作用。

As disscused here我尝试添加这个:

'Access-Control-Expose-Headers': 'location'

到我的请求中的 header 列表,使其适合 CORS policy requiremnts ,但这没有帮助。我认为这应该插入服务器端,而不是客户端。我的猜测是我不是第一个遇到这个问题的人,但是 BlueSnap 的客户支持并没有解决这个问题的方法。唯一可能的解决方案是在服务器上添加'Access-Control-Expose-Headers': 'location'吗?

我的问题是:我如何访问这个http响应位置 header ,它确实发送到我的浏览器,但目前无法与我的JS代码一起使用。

非常感谢您的时间和精力!

*我认为我对这个特定问题并不重要,但我正在使用 ReactJS 开发这个项目

最佳答案

你不能。

用于在网络浏览器中从 JavaScript 发出 HTTP 请求的 API(fetchXMLHttpRequest)透明遵循重定向。

response 对象将包含对 location header 中指定位置的请求的响应。您永远无法访问包含重定向指令的响应。


如果您阅读 documentation对于 API,它说:

You create a Hosted Payment Fields token for the specific checkout session, using a server-to-server API call.

…所以你一开始就不应该从客户端 JS 访问它。

关于javascript - 无法访问 JS 中的 fetch() 响应位置 header ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64241556/

相关文章:

reactjs - 如何在我的事件处理程序中访问 React 状态?

javascript - 汇总错误 : 'default' is not exported by node_modules/react/index. js

javascript - Node.js 的 SQLite3 教程和需要的代码示例说明

javascript - React — 使用样式化组件传递 props

node.js - 将 Express React Redux 模板部署到 Heroku 的步骤

asp.net - MVC 4 导出到 CSV - 另存为对话框在 Chrome 和 Firefox 中不起作用

java - 如何在 jetty 服务器中为 CSS、Javascript、图像等静态资源设置过期 header

apache - 您可以编写301重定向到 anchor 吗?

javascript - JsTree 呈现空 <ul> 标签

javascript - 如何使用 ReactJs 中的键从父组件打开子组件模式