码迷,mamicode.com
首页 > Web开发 > 详细

CORS FOR AspNetCore

时间:2017-12-30 00:58:31      阅读:357      评论:0      收藏:0      [点我收藏+]

标签:body   定义   factory   根据   pip   doc   har   void   可见   

废话:

以前总是看别人博客,但是连评论都懒得给一个,于是心有愧疚,开始写写东西。本人不是科班出生的CODER,只是看多了,懂一些,了解一些思想,也不会动手CODING,也就把看到的换种话记录下来。最近了解了一下asp.net core 的pipeline,认识了CORS,这篇文章就是把关于CORS的Microsoft知识文档用自己的话翻译一下。

正文:

参考:

https://docs.microsoft.com/en-us/aspnet/core/security/cors

 

 CORS(Cross Origin Resource Sharing),是一种跨域资源共享方式,由于浏览器“same-origin"(同源同策)的限制,其在实际应用中产生,同是W3C标准

至于何为SAME-ORIGIN:

  1. 协议相同,比如http、https、file等
  2. 域相同,比如www.baiud.com
  3. 端口相同

 

如何使用CORS

使用方法一:全局应用

.net core 的CORS模块位于Microsoft.AspNetCore.Cors的nuget包

在asp.net core 中的services和middleware配置CORS

添加引用:

using Microsoft.AspNetCore.Cors

 

startup.cs

public void ConfigurationServices(IserviceCollection services)
{
    services.AddCors()
}
public void Configure(IApplicationBuilder app,IHostingEnviroment env,ILoggerFactory loggerFactory)
{
  app.UseCors(builder=>
    builder.WithOrigins("http://localhost:5000”);
  );
}

 

 注意:

  1. AddCors()优先于其他任何服务
  2. builder.WithOrigins(url)的参数不能以‘/’结尾
  3. builder有一些chain method ,是用于过滤请求的,可自行查阅

 

使用方法二:命名使用

先定义一个或多个CORS策略,在controller、class、function等对象上根据策略名字,在attribute中使用

 

startup.cs

public void ConfigureServices(IServiceCollection services)
{
    services.AddCors(options =>
    {
        options.AddPolicy("AllowAOrigin",
            builder => builder.WithOrigins("http://example.com"));

        options.AddPolicy("AllowBOrigin",
            builder => builder.WithOrigins("http://example.com"))

  }); 
} 

public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory) 
{ 
  app.UseCors("AllowAOrigin");
}

//如果是MVC APP,只需要add service,不需要配置middleware

在attribute中使用CORS

[HttpGet]
[EnableCors("AllowSpecificOrigin")]
public IEnumerable<string> Get()
{
    return new string[] { "value1", "value2" };
}

 限制所有controller

public void ConfigureServices(IServiceCollection services)
{
    services.AddMvc();
    services.Configure<MvcOptions>(options =>
    {
        options.Filters.Add(new CorsAuthorizationFilterFactory("AllowAOrigin"));
    });
}

 到这里CORS基本用法差不多了,细节之处可见官网文档,英语好的可以自行看英文文档.至于这个东西在实际什么项目中怎么应用我也不清楚,不过我用在分离前后端上倒是好用。

CORS FOR AspNetCore

标签:body   定义   factory   根据   pip   doc   har   void   可见   

原文地址:https://www.cnblogs.com/wellsyu/p/8146499.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!