.NetCore在跨域时设置自定义响应头的注意事项
现在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");
});
});
这样我们就可以前端脚本上拿到这个响应头了。
一个专注于.NetCore的技术小白
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY