WebApi使用cors配置跨域问题
1.首先安装CORS,在WebApiCors项目上面使用Nuget搜索“microsoft.aspnet.webapi.cors”,安装第一个
2.当我们安装这个包之后,现有的packages目录下会添加两个名称分别为“Microsoft.AspNet.Cors.5.2.3”和“Microsoft.AspNet.WebApi.Cors.5.2.3”,针对保存其中的两个程序集(System.Web.Cors.dll和System.Web.Http.Cors.dll)的引用被自动添加到WebApiCors项目中
3.在App_Start文件夹下面的WebApiConfig.cs文件夹配置跨域
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | public static class WebApiConfig { public static void Register(HttpConfiguration config) { //跨域配置 config.EnableCors( new EnableCorsAttribute( "*" , "*" , "*" )); // Web API 路由 config.MapHttpAttributeRoutes(); config.Routes.MapHttpRoute( name: "DefaultApi1" , routeTemplate: "api/{controller}/{action}/{id}" , defaults: new { id = RouteParameter.Optional } ); } } |
cors支持不支持IE 7 8 9
Cors的详细参数
上文我们用的是:config.EnableCors(new EnableCorsAttribute(““, ““, “*”));,这里的*号表示只要别人知道你的url,任何请求都能返回资源,这是不安全的,所以需要进行访问控制。
配置方法一
在Web.Config配置:
1 2 3 4 5 | <appSettings> <add key= "cors:allowedMethods" value= "*" /> <add key= "cors:allowedOrigin" value= "http://localhost:8610" /> <add key= "cors:allowedHeaders" value= "*" /> </appSettings> |
然后在WebApiConfig.cs文件配置
1 2 3 4 5 6 7 8 9 10 11 12 13 | public static void Register(HttpConfiguration config) { //跨域配置 var allowedMethods = ConfigurationManager.AppSettings[ "cors:allowedMethods" ]; var allowedOrigin = ConfigurationManager.AppSettings[ "cors:allowedOrigin" ]; var allowedHeaders = ConfigurationManager.AppSettings[ "cors:allowedHeaders" ]; var geduCors = new EnableCorsAttribute(allowedOrigin, allowedHeaders, allowedMethods) { SupportsCredentials = true }; config.EnableCors(geduCors); //config.EnableCors(new EnableCorsAttribute("*", "*", "*")); |
如果你只想对某一些api做跨域,可以直接在API的类上面使用特性标注即可。
1 2 3 4 5 6 7 8 9 10 11 12 13 | [EnableCors(origins: "http://localhost:8610/" , headers: "*" , methods: "GET,POST,PUT,DELETE" )] public class AccountController : ApiController { /// <summary> /// 得到所有数据 /// </summary> /// <returns>返回数据</returns> [HttpGet] public string GetAllData() { return "Success" ; } } |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· C#/.NET/.NET Core技术前沿周刊 | 第 29 期(2025年3.1-3.9)
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异