.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的技术小白
    
    

 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号