访问控制允许原始错误

时间:2013-11-07 03:09:50

标签: javascript jquery asp.net-mvc-4 safari asp.net-web-api

我正在编写我的第一个WebAPI服务,从纯HTML / javascript应用程序调用。我首先启动视觉工作室,然后在Safari中运行我的应用程序(它拒绝在Chrome中运行,无论我做什么都给出了这个确切的错误,但在Safari中一直很好,直到现在)。

基于我对此的其他SO读物,我添加了一个标题为Access-Control-Allow-Origin,其值为*。

当我在我的网络应用程序中按下按钮时,它会进行AJAX调用,我可以单步执行调试器,看看它正在调用我的服务。当它返回时,它总是返回一个对象,并且控制台中Safari中的错误是“XMLHttpRequest无法加载(myurl)。原始文件://不允许使用Access-Control-Allow-Origin”。

有关如何让Safari接受返回值的任何建议将不胜感激。正如我所说的那样,它返回了一个类,我希望WebAPI将其转换为JSON字符串以返回到浏览器。我不知道我在这里做错了什么,或者在Safari中出了什么问题。我应该提一下,虽然我认为很明显,我使用的是MVC4,因为我在Windows上使用的是Safari,而不是Mac。

由于

3 个答案:

答案 0 :(得分:0)

您目前如何添加标题?问题是没有让safari接受返回值,你的WebAPI拒绝了请求。

这是一篇关于如何在Web API v1(MVC4)中实现CORS的文章。 http://goo.gl/BZkrlf

如果您可以使用MVC5 / WebAPI v2,则可以通过NuGet包更简单地启用CORS(请参阅此操作方法http://goo.gl/60YkgX

答案 1 :(得分:0)

这是协议不匹配的问题。如果请求源自FILE协议,则无法向HTTP协议发送跨域请求。尝试使用本地Web服务器查看页面,以便您可以使用HTTP在浏览器中预览页面。我遇到了同样的问题 - 它是浏览器方面,而不是您的服务问题。

答案 2 :(得分:0)

您可以使用nuget中的Microsoft.AspNet.Cors并添加

var attr = new EnableCorsAttribute(“”,“”,“GET”);  config.EnableCors(ATTR);

到WebApiConfig.cs