欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Asp.net Core CORS 跨域

程序员文章站 2022-06-20 23:37:51
本文主要介绍在Asp.net Core采用CORS方式解决跨域 关于跨域的原理介绍可参考 "Asp.net Web API 解决跨域详解" 1 在Startup添加允许跨域的策略 2怎样应用AnyOrigin策略 只需要在控制器头上(或某个行为上)添加标识: 如: 3 AnyOrigin略几乎直接完 ......

本文主要介绍在Asp.net Core采用CORS方式解决跨域
关于跨域的原理介绍可参考

  • 1 在Startup添加允许跨域的策略
      services.AddCors(options =>
            {
                options.AddPolicy("AnyOrigin", builder =>
                {
                    builder.AllowAnyOrigin() //允许任何来源的主机访问
                    .AllowAnyMethod()//允许任何请求方法
                    .AllowAnyHeader()//允许任何请求头
                    .AllowCredentials();//指定处理cookie
                });             
            });
  • 2怎样应用AnyOrigin策略
    只需要在控制器头上(或某个行为上)添加标识:[EnableCors("AnyOrigin")]
    如:
   [Route("api/[controller]/[action]")]
    [ApiController]
    [EnableCors("AnyOrigin")]
    public class ValuesController : ControllerBase
    {
        // GET api/values
        [HttpGet]
        public ActionResult<IEnumerable<string>> Get()
        {
            return new string[] { "value1", "value2" };
        }
    }
  • 3
    AnyOrigin略几乎直接完全无视了“同源策略”的限制,任何客户端都允许跨域访问,实际项目中建议尽量不要这么写。
    可以采用如下方式,对访问源,HTTP请求方法及请求头根据实际情况进行限制:
      services.AddCors(options =>
            {                          
                options.AddPolicy("AllowSpecificOrigin", builder =>
                {
                    builder.WithOrigins("http://localhost:40197", "http://localhost:40196")
                    .WithHeaders("GET", "POST")
                    .WithHeaders("Authorization");
                });
            });