1.在web.config里把“ <remove name="OPTIONSVerbHandler" /> ”删掉。
2. 到nuget上装一个包: http://www.nuget.org/packages/Microsoft.AspNet.WebApi.Cors/
3. 注册使用CORS
方法一:
在WebApiConfig.Register方法中加入代码:
config.EnableCors();
在Controller或Action上加上Attribute:
[EnableCors(origins: "http://myclient.azurewebsites.net", headers: "*", methods: "*")]
方法二:
在WebApiConfig.Register方法中加入代码:
var cors = new EnableCorsAttribute("http://www.contoso.com,http://www.example.com", "*", "*"); config.EnableCors(cors);
在Controller或Action上加上Attribute:
[EnableCors]
在不需要跨域访问的Action上,可以加上Attribute:
[DisableCors]
这个域名可以配置单个,也可以配置多个,具体可参考官网教程:
https://www.asp.net/web-api/overview/security/enabling-cross-origin-requests-in-web-api
最后,在服务端完提供支持以后,不要高兴的太早,如果你用jQuery.ajax()的方式去请求,还是会报错的:
$.ajax({ url: 'yourCORSurl', data: '', dataType: 'json', type: 'GET', contentType: 'application/json; charset=utf-8', ... })
经过无数次爆破,终于发现,只要把dataType和contentType两个参数去掉,就肯定不会报错了!!!虽然不知道为什么,但代码能用了。
【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步