routes efault pre action let tro img 搜索
CORS 全称 Cross-Origin Resource Sharing,中文全称跨域资源共享。它解决跨域问题的原理是通过向 http 的请求报文和响应报文里面加入相应的标识告诉浏览器它能访问哪些域名的请求
在 webApiCORS 项目上面使用 Nuget 搜索 "microsoft.aspnet.webapi.cors"
然后在 App_Start 文件夹下面的 WebApiConfig.cs 文件夹配置跨域
- public static class WebApiConfig
- {
- public static void Register(HttpConfiguration config)
- {
- //跨域配置config.EnableCors(newEnableCorsAttribute("*","*","*"));
- // Web API 路由
- config.MapHttpAttributeRoutes();
- config.Routes.MapHttpRoute(
- name: "DefaultApi",
- routeTemplate: "api/{controller}/{action}/{id}",
- defaults: new{ id = RouteParameter.Optional }
- );
- }
- }
调用处指定 jQuery.support.cors = true; 这一句就能解决 IE8、9 对 CORS 的支持问题
,这种 * 号是不安全的。因为它表示只要别人知道了你的请求 url,任何请求都可以访问到你的资源。这是相当危险的。所以需要我们做一些配置,限制访问权限。比如我们比较常见的做法如下:
配置方法一:
到 web.config 配置文件中
- "cors_allowOrigins"value="*"/>"cors_allowHeaders"value="*"/>"cors_allowMethods"value="*"/>
- varallowOrigins = ConfigurationManager.AppSettings["cors_allowOrigins"];
- varallowHeaders = ConfigurationManager.AppSettings["cors_allowHeaders"];
- varallowMethods = ConfigurationManager.AppSettings["cors_allowMethods"];
- varglobalCors =new EnableCorsAttribute(allowOrigins, allowHeaders, allowMethods);
- config.EnableCors(globalCors);
配置方法二:
- [EnableCors(origins:"http://localhost:8081/", headers:"*", methods:"GET,POST,PUT,DELETE")]
- public class ChargingController : ApiController
- {
- /// <summary>
- /// 得到所有数据
- /// </summary>
- /// <returns>返回数据</returns>
- [HttpGet]
- public string GetAllChargingData()
- {
- return "Success";
- }
- }
参考:http://www.cnblogs.com/landeanfen/p/5177176.html
http://www.cnblogs.com/shy1766IT/p/5215311.html
CORS 解决 WebApi 跨域问题 (转)
来源: http://www.bubuko.com/infodetail-2137741.html