在dotnet core web api中支持CORS(跨域访问)
2017-12-04 09:19
686 查看
最近在写的Office add-in开发系列中,其中有一个比较共性的问题就是在add-in的客户端脚本中访问远程服务时,要特别注意跨域访问的问题。
关于CORS的一些基本知识,请参考维基百科的说明:https://en.wikipedia.org/wiki/Cross-origin_resource_sharing
那么,如果我们自己写一个服务,怎么样让他支持CORS呢?我下面用一个例子演示这个过程
1. 使用dotnet new webapi 这个指令创建一个基于dotnet core的项目
2.不要做任何修改,直接运行dotnet run
3.在浏览器中,输入 http://localhost:5000/api/values 查看结果
此时我们这个api其实是不支持跨域访问的,我们可以通过下面的免费的工具进行测试
4.通过简单的两句代码即可让这个api支持跨域访问
请注意,这一行代码需要写在AddMvc之后。
然后在需要暴露出来的API Controller上面启用CORS
5. 再次测试,我们就可以发现现在这个API已经支持跨域访问了
6.如果是需要给所有的API,都实现这个功能,那么下面这样的方式可能更加简化
7. 如果不想这么复杂,其实在对应的方法里面,显式地修改Response的Headers属性也是可以的。
Response.Headers.Add("Access-Control-Allow-Origin","*");
8. 如果你选择将这个API部署到Azure,而且使用的是 Web App这个服务的话,甚至可以做到更好:代码中不需要定义CORS属性,而是在平台上面定义
关于CORS的一些基本知识,请参考维基百科的说明:https://en.wikipedia.org/wiki/Cross-origin_resource_sharing
那么,如果我们自己写一个服务,怎么样让他支持CORS呢?我下面用一个例子演示这个过程
1. 使用dotnet new webapi 这个指令创建一个基于dotnet core的项目
2.不要做任何修改,直接运行dotnet run
3.在浏览器中,输入 http://localhost:5000/api/values 查看结果
此时我们这个api其实是不支持跨域访问的,我们可以通过下面的免费的工具进行测试
4.通过简单的两句代码即可让这个api支持跨域访问
请注意,这一行代码需要写在AddMvc之后。
然后在需要暴露出来的API Controller上面启用CORS
5. 再次测试,我们就可以发现现在这个API已经支持跨域访问了
6.如果是需要给所有的API,都实现这个功能,那么下面这样的方式可能更加简化
7. 如果不想这么复杂,其实在对应的方法里面,显式地修改Response的Headers属性也是可以的。
Response.Headers.Add("Access-Control-Allow-Origin","*");
8. 如果你选择将这个API部署到Azure,而且使用的是 Web App这个服务的话,甚至可以做到更好:代码中不需要定义CORS属性,而是在平台上面定义
相关文章推荐
- asp.net core webapi之跨域(Cors)访问
- ASP.NET Core WebApi 跨域配置 Cors
- 一个简单的QQ隐藏图生成算法 通过jQuery和C#分别实现对.NET Core Web Api的访问以及文件上传
- 使Asp.net WebApi支持JSONP和Cors跨域访问
- 在ASP.NET Core Web API中为RESTful服务增加对HAL的支持
- 通过Swashbukle给DotNet Core Web API 增加自动文档功能
- dotnet core webapi +vue 搭建前后端完全分离web架构
- 通过Swashbukle给DotNet Core Web API 增加自动文档功能
- 支持多个版本的ASP.NET Core Web API
- .Net Core Webapi跨域处理
- WebAPI CORS 支持跨域POST
- Asp.Net Core WebAPI入门整理(三)跨域处理
- asp.net core 创建允许跨域请求的api, cors.
- 在ASP.NET Core Web API 项目里无法访问(wwwroot)下的文件
- 通过Swashbukle给DotNet Core Web API 增加自动文档功能
- WebAPI CORS 支持跨域POST
- 支持多个版本的ASP.NET Core Web API
- Asp.NetCoreWebApi图片上传接口(二)集成IdentityServer4授权访问(附源码)
- dotnet core webapi +vue 搭建前后端完全分离web架构(一)
- 通过jQuery和C#分别实现对.NET Core Web Api的访问以及文件上传