【发布时间】:2014-10-10 08:26:34
【问题描述】:
我已经尽可能简单地重新创建了我的错误,它是这样的:
我有一个 c# Web Api 项目,并安装了 CORS Web Api nuget 包。然后我将它添加到 WebApiConfig.cs 的注册函数中:
var cors = new EnableCorsAttribute("*", "*", "*");
config.EnableCors(cors);
然后我创建了一个非常简单的“GetToken”api,粘贴在下面:
[Route("~/api/auth/token")]
public HttpResponseMessage GetToken()
{
var result = new
{
FirstName = "matt"
};
var response = Request.CreateResponse(HttpStatusCode.OK, result);
HttpContext.Current.Response.Headers.Set("Access-Control-Allow-Headers", "Authorization");
HttpContext.Current.Response.Headers.Set("Access-Control-Expose-Headers", "Authorization");
HttpContext.Current.Response.Headers.Set("Authorization", "test");
//HttpContext.Current.Response.Headers.Set("Access-Control-Allow-Methods", "GET, OPTIONS");
//HttpContext.Current.Response.Headers.Set("Access-Control-Allow-Credentials", "true");
//HttpContext.Current.Response.Headers.Set("Access-Control-Allow-Origin", "http://run.plnkr.co/");
return response;
}
注释掉的代码只是我用来尝试解决此问题的许多 Header 配置组合中的一部分。在 web api 之后,我在 plunker 中创建了一个非常基本的 api 调用:
var Test1 = function() {
$.ajax("http://localhost:61826/api/auth/token", {
type: "GET",
success: function(data, status, xhr) {
debugger;
},
error: function(err) {
debugger;
},
crossDomain: true
});
}
我还创建了一个 Angular 版本,如果有人需要,我会分享。
最终结果。在 chrome 中,它工作得非常好,你可以在这里看到(授权标头在那里):
但在 Safari 中它不起作用,正如您在此处看到的(缺少授权标头):
这几天我一直在碰壁,现在是时候引入社区了。谁能告诉我这是怎么回事?
【问题讨论】:
-
你找到答案了吗?
标签: ajax safari cors asp.net-web-api