博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
CORS FOR AspNetCore
阅读量:7080 次
发布时间:2019-06-28

本文共 1974 字,大约阅读时间需要 6 分钟。

废话:

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

正文:

参考:

 

 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
Get(){ return new string[] { "value1", "value2" };}

 限制所有controller

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

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

转载于:https://www.cnblogs.com/wellsyu/p/8146499.html

你可能感兴趣的文章
Apache Module加载问题解决方案
查看>>
吉利集团子公司研发全球首款飞行车将于明年上市
查看>>
掌握多少门编程语言才能成为优秀程序员?
查看>>
vector二维数组初始化
查看>>
买电脑装什么系统好?win7还是win10?
查看>>
python爬虫系列之初识爬虫
查看>>
1月16日云栖精选夜读 | 阿里P8架构师谈:Zookeeper的原理和架构设计,以及应用场景...
查看>>
How do you create a DynamicResourceBinding that supports Converters, StringFormat?
查看>>
《快学 Go 语言》第 9 课 —— 接口
查看>>
HTML5抽奖转盘
查看>>
PostgreSQL 10.1 手册_部分 III. 服务器管理_第 31 章 逻辑复制_31.6. 监控
查看>>
python 练习
查看>>
Kafka三款监控工具比较(转载)
查看>>
SQL Server中sp_spaceused统计数据使用的空间总量不正确的原因
查看>>
不一样的Java Enum
查看>>
Visual Studio 2015 和 Apache Cordova 跨平台开发入门
查看>>
Java Web之Cookie和Session的理解
查看>>
C#使用Xamarin开发可移植移动应用(4.进阶篇MVVM双向绑定和命令绑定)附源码
查看>>
spark 统计每天新增用户数
查看>>
使用.NET Core搭建分布式音频效果处理服务(二)创建基于FFMpeg的Web程序
查看>>