美文网首页
Asp.net Core CORS 跨域

Asp.net Core CORS 跨域

作者: 凌雲木 | 来源:发表于2018-08-07 15:20 被阅读40次

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

    • 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");
                    });
                });
    

    相关文章

      网友评论

          本文标题:Asp.net Core CORS 跨域

          本文链接:https://www.haomeiwen.com/subject/glqavftx.html