根据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。
答案 0 :(得分:2)
您需要将以下内容添加到Web.Config:
<httpProtocol>
<customHeaders>
<add name="Access-Control-Allow-Origin" value="*" />
<add name="Access-Control-Allow-Headers" value="Content-Type" />
<add name="Access-Control-Allow-Methods" value="GET, POST, PUT, DELETE, OPTIONS" />
</customHeaders>
</httpProtocol>
System.webServer 配置节点内部。
答案 1 :(得分:2)
在WebApiConfig中的CORS设置实际工作之前,您需要将Microsoft.AspNet.WebApi.Cors NuGet包添加到项目中。
答案 2 :(得分:-1)
也许你应该在控制器中为帖子请求写一个动作
就像这样
public HttpResponseMessage Post()
{
//Do something here
}