Access-Control-Expose-Headers 响应报头、跨域 公开响应头

问题现象: 前端无法获取响应头 Response Header 原因


问题原因:跨域问题 启用跨域请求(CORS)


前后端分离的项目,前端地址与后端地址不同,出现了跨域问题,因此 前端人员拿取不到后端返回的Response.headers.自定义的响应头 “X-Check-Submit-Repeat”(只能拿到默认的标头)

这里是引用

在使用CORS方式跨域时,浏览器只会返回 默认的头部 Header,认情况下可用的响应头包括:

  • Cache-Control
  • Content-Language
  • Content-Type
  • Expires
  • Last-Modified
  • Pragma

CORS规范将这些头称为 简单响应头 。要使用其他头可用于应用,请调用 WithExposedHeaders(String[]) 方法,设置 公开 (后端代码可看下方链接)。
这样响应头就会显示 Access-Control-Expose-Headers :…自定义头…
接着前端就能拿到里面的自定义响应头了。


Access-Control-Expose-Headers响应报头


简介

Access-Control-Expose-Headers 响应报头 指示哪些报头可以 公开 为通过列出他们的名字的响应的一部分
默认情况下,只显示6个简单的响应头,在上方也有介绍。
如果你想要客户端能够访问其他的请求头,则必须使用Access-Control-Expose-Headers 列出他们。

语法

Access-Control-Expose-Headers: , , …

参数说明
  • header-name
    暴露的头部列表,其中包含零个或多个头部名称,而不是资源可能使用并可能暴露的简单响应头(Response Header)

示例

  • 要公开一个非简单的自定义响应头,你可以指定(x开头是命名规范,下方有链接 有时间可以看看)
Access-Control-Expose-Headers: X-Check-Submit-Repeat
  • 要公开多个自定义标题,你可以用逗号分隔
Access-Control-Expose-Headers: X-Check-Submit-RepeatX-Order




推荐内容








`Access-Control-Expose-Headers` 是CORS(资源共享)中的一个响应头,用于指定哪些响应头可以被客户端JavaScript代码访问。默认情况下,客户端只能访问一些基本的响应头,如 `Cache-Control`, `Content-Language`, `Content-Type`, `Expires`, `Last-Modified`, 和 `Pragma`。如果你需要让客户端能够访问其他响应头,就必须使用 `Access-Control-Expose-Headers` 来显式地指定。 `Content-Disposition` 是一个常用的响应头,用于指示内容的展示方式(如内联显示或作为附件下载)。默认情况下,`Content-Disposition` 并不在CORS的默认暴露头列表中,因此如果你需要让客户端能够访问 `Content-Disposition` 头,就必须将其添加到 `Access-Control-Expose-Headers` 中。 以下是一个示例代码,展示了如何在服务器端设置 `Access-Control-Expose-Headers` 以支持 `Content-Disposition` 字段: ```python from flask import Flask, make_response app = Flask(__name__) @app.route('/download') def download_file(): headers = { 'Content-Disposition': 'attachment; filename="example.txt"' } response = make_response("File content", 200) response.headers['Access-Control-Expose-Headers'] = 'Content-Disposition' response.headers['Content-Disposition'] = 'attachment; filename="example.txt"' return response if __name__ == '__main__': app.run(debug=True) ``` 在这个示例中,我们使用 Flask 框架创建了一个简单的服务器端应用。当客户端请求 `/download` 路由时,服务器会返回一个带有 `Content-Disposition` 头的响应,并将其添加到 `Access-Control-Expose-Headers` 中,以便客户端可以访问该头。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

元气小羊.

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值