当前位置: 首页 > news >正文

CORS FOR AspNetCore

废话:

以前总是看别人博客,但是连评论都懒得给一个,于是心有愧疚,开始写写东西。本人不是科班出生的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基本用法差不多了,细节之处可见官网文档,英语好的可以自行看英文文档.至于这个东西在实际什么项目中怎么应用我也不清楚,不过我用在分离前后端上倒是好用。

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

相关文章:

  • spark shell的学习
  • 安卓模拟器BlueStacks+TCPdump对APP抓包分析
  • maven scope含义的说明
  • Javac编译器源代码分析
  • 物极必反,滥用闭包的结果就是回归结构化编程
  • 2017 年终总结 —— 在路上
  • 加密算法(对称加密)AES、DES (非对称加密)RSA、DSA
  • Hadoop集群(第10期)_MySQL关系数据库
  • python学习笔记(四)字符串及字符串操作
  • 【Dalston】【第六章】API服务网关(Zuul) 下
  • 解决 Nginx + PHP-FPM (Permission denied)报错的办法
  • sqlvarchar后自动填充空格解决办法(SET ANSI_PADDING)
  • 当文本输入框和是否勾选在同一列表时,你懵圈了吗
  • 01月03日三周二次【Python基础进阶】
  • linux下SVN忽略文件/文件夹的方法
  • .pyc 想到的一些问题
  • Android开源项目规范总结
  • gcc介绍及安装
  • JS字符串转数字方法总结
  • Netty+SpringBoot+FastDFS+Html5实现聊天App(六)
  • rc-form之最单纯情况
  • React 快速上手 - 06 容器组件、展示组件、操作组件
  • Spring核心 Bean的高级装配
  • ⭐ Unity 开发bug —— 打包后shader失效或者bug (我这里用Shader做两张图片的合并发现了问题)
  • VirtualBox 安装过程中出现 Running VMs found 错误的解决过程
  • vue2.0项目引入element-ui
  • 爱情 北京女病人
  • 二维平面内的碰撞检测【一】
  • 计算机常识 - 收藏集 - 掘金
  • 技术胖1-4季视频复习— (看视频笔记)
  • 力扣(LeetCode)357
  • 浅谈Golang中select的用法
  • 想使用 MongoDB ,你应该了解这8个方面!
  • 延迟脚本的方式
  • 正则表达式
  • 自制字幕遮挡器
  • 基于django的视频点播网站开发-step3-注册登录功能 ...
  • 如何用纯 CSS 创作一个菱形 loader 动画
  • 整理一些计算机基础知识!
  • ###51单片机学习(1)-----单片机烧录软件的使用,以及如何建立一个工程项目
  • #我与Java虚拟机的故事#连载17:我的Java技术水平有了一个本质的提升
  • (1)(1.9) MSP (version 4.2)
  • (2)(2.10) LTM telemetry
  • (echarts)echarts使用时重新加载数据之前的数据存留在图上的问题
  • (pojstep1.3.1)1017(构造法模拟)
  • (Redis使用系列) SpirngBoot中关于Redis的值的各种方式的存储与取出 三
  • (图)IntelliTrace Tools 跟踪云端程序
  • (转)Linux NTP配置详解 (Network Time Protocol)
  • (转)从零实现3D图像引擎:(8)参数化直线与3D平面函数库
  • (转)可以带来幸福的一本书
  • (转)四层和七层负载均衡的区别
  • (轉)JSON.stringify 语法实例讲解
  • .helper勒索病毒的最新威胁:如何恢复您的数据?
  • .Net 8.0 新的变化
  • .net framework4与其client profile版本的区别