【发布时间】:2014-08-14 07:37:06
【问题描述】:
我有一个 WebApi2 OWIN SelfHost 应用程序和一个 REST 方法。我对服务进行了 JQuery ajax 调用,但出现错误“No 'Access-Control-Allow-Origin'”,如下所示:
我已添加 Nuget 包“Microsoft.Owin.Cors”以启用 cors。
这是我的启动 API 代码:
app.Map("/api", apiApp =>
{
var config = new HttpConfiguration();
config.MapHttpAttributeRoutes();
apiApp.UseWebApi(config);
apiApp.UseCors(Microsoft.Owin.Cors.CorsOptions.AllowAll);
});
我的 API 控制器类:
[RoutePrefix("car")]
[AllowAnonymous]
public class CarController : ApiController
我的 API 控制器方法:
[HttpGet]
[Route("get/{id}")]
public HttpResponseMessage Get(string id)
{
var car = GetCars().Where(c => c.Id.Equals(id)).FirstOrDefault();
return new HttpResponseMessage(HttpStatusCode.OK)
{
Content = new ObjectContent<object>(new
{
car
}, Configuration.Formatters.JsonFormatter)
};
}
这是我的 ajax 代码:
$.ajax({
type: "GET",
url: 'url.../api/car/get/6975908',
headers: {
'Access-Control-Allow-Origin': '*',
"X-Requested-With": "XMLHttpRequest"
},
crossDomain: true,
dataType: 'json',
success: function (data) {
if (data.Success) {
alert(data.Content); //display success
}
else {
alert(data.Message) //display exception
}
},
error: function (XMLHttpRequest, textStatus, errorThrown) {
alert(textStatus);
}
});
错误信息: “加载资源失败:服务器响应状态为 405(不允许方法) url.../api/car/get/6975908 XMLHttpRequest 无法加载 url.../api/car/get/6975908。请求的资源上不存在“Access-Control-Allow-Origin”标头。因此不允许访问 Origin 'url...:62456'。"
此时我只需要开启CORS,不需要授权,我已经在控制器上设置了[AllowAnonymous]属性。可能是什么问题?
【问题讨论】:
标签: ajax cors asp.net-web-api owin