【发布时间】:2015-11-18 03:42:18
【问题描述】:
根据asp.net tutorial,我们只需要以下代码即可在Web Api应用程序上启用cors:
var cors = new EnableCorsAttribute("*","*", "*");
config.EnableCors(cors);
以下是我的代码:
public static class WebApiConfig
{
public static void Register(HttpConfiguration config)
{
// Web API configuration and services
var cors = new EnableCorsAttribute("*","*", "*");
config.EnableCors(cors);
// Web API routes
config.MapHttpAttributeRoutes();
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
var jsonFormatter = config.Formatters.OfType<JsonMediaTypeFormatter>().First();
jsonFormatter.SerializerSettings.ContractResolver = new CamelCasePropertyNamesContractResolver();
config.Formatters.JsonFormatter.SupportedMediaTypes.Add(new MediaTypeHeaderValue("text/html"));
}
}
Get 工作正常,但Post 请求仍然出错
以下是错误,我正在发帖:
POST http://api.example.com/token 404(未找到) XMLHttpRequest 无法加载 http://api.example.com/token。没有“Access-Control-Allow-Origin”标头 存在于请求的资源上。原点'http://www.example.com' 因此不允许访问。响应包含 HTTP 状态代码 404.
【问题讨论】:
-
对同一资源的非CORS(同域)POST请求是否成功?我们可以看看你的控制器方法吗?
-
同一个域。 Web Api 只是主域 api.mydomain.com 的子域。
-
子域不是同一个域。
-
然后 var cors = new EnableCorsAttribute("","", "*"); config.EnableCors(cors);应该工作吗?
-
我什至不确定您的方向是否正确。 404错误?这条路线甚至存在吗? WebApi 路由区分大小写......你确定你不应该点击
/Token吗? 请向我们展示您的控制器代码/路由。
标签: c# asp.net .net asp.net-web-api cors