现在B/S开发基本都是前后端分离的方式了吧,那么这往往会涉及到一个跨域的问题,为了安全,跨域访问往往做了很多的限制,这里对跨域时自定义响应头做个笔记。
当我们在.NetCore的后端给请求添加了一个自定义的响应头的时候,通过api调用,响应头完美的返回:
public class HomeController : ControllerBase
{
[HttpGet]
public object Get()
{
Response.Headers["Access-Token"] = "XXXXXXXX";
return "Hello";
}
}
接口响应可以看到有响应头:
然后你兴高采烈的提交接口,提交给前端,然后前端说拿不到响应头,这就有点纳闷了,明明返回了,为什么会拿不到?
其实,这也是跨域访问的一个限制,这就要说说Access-Control-Expose-Headers
这个响应头了,它的作用主要是在响应跨源请求中,允许服务器指定哪些响应头可以暴露给浏览器中运行的脚本(js),往往它需要和Access-Control-Allow-Origin
、Access-Control-Allow-Methods
等一起使用,毕竟要在跨域请求中啦。
所以,我们只需要在跨域的管道配置中添加这个自定义的响应头既可以:
//跨域
services.AddCors(options =>
{
options.AddDefaultPolicy(builder =>
{
builder.AllowAnyHeader()
.AllowAnyOrigin()
.AllowAnyMethod()
.WithExposedHeaders("Access-Token");
});
});
这样我们就可以前端脚本上拿到这个响应头了。
标签:Control,跨域,自定义,NetCore,Access,响应 From: https://www.cnblogs.com/shanfeng1000/p/18092595