Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/452.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 访问控制允许源错误_Javascript_Jquery_Asp.net Mvc 4_Safari_Asp.net Web Api - Fatal编程技术网

Javascript 访问控制允许源错误

Javascript 访问控制允许源错误,javascript,jquery,asp.net-mvc-4,safari,asp.net-web-api,Javascript,Jquery,Asp.net Mvc 4,Safari,Asp.net Web Api,我正在编写我的第一个WebAPI服务,它将从纯HTML/javascript应用程序调用。我先启动VisualStudio,然后在Safari中运行我的应用程序(它拒绝在Chrome中运行,并且无论我做什么都会给出这个确切的错误,但在Safari中一直很好,直到现在) 基于我的另一个SO阅读,我添加了一个标题,它是Access Control Allow Origin,值为* 当我按下web应用程序中的按钮时,它会发出一个AJAX调用,我可以逐步通过调试器查看它是否调用了我的服务。当它返回时,它

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

基于我的另一个SO阅读,我添加了一个标题,它是Access Control Allow Origin,值为*

当我按下web应用程序中的按钮时,它会发出一个AJAX调用,我可以逐步通过调试器查看它是否调用了我的服务。当它返回时,它总是返回一个对象,控制台中Safari中的错误是“XMLHttpRequest无法加载(myurl)。访问控制不允许原始文件:/”

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


谢谢

您当前如何添加标题?问题不是让safari接受返回值,而是WebAPI拒绝了请求

下面是一篇关于如何在WebAPIv1(MVC4)中实现CORS的文章


如果您可以使用MVC5/WebAPI v2,那么有一种更简单的方法可以通过NuGet包启用CORS(请参阅本操作指南)

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

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

var attr=newenableCorsattribute(“,”,“GET”); config.EnableCors(attr)


到WebApiConfig.cs

您也可以转到获取更多信息如果我的web api拒绝了请求,为什么我可以单步执行代码?在运行我的代码之后,它是如何拒绝请求的?好吧,看起来这篇文章现在也只适用于VS2013,所以我不妨试试NuGet包。但是我仍然不明白为什么它会发出调用,运行代码,然后失败。你能在这里发布来自WebAPI服务器的原始HTTP响应吗?查看请求后返回的所有内容会很有帮助。好吧-这有点道理,谢谢,我会尝试一下。遗憾的是,现在它说访问控制不允许源代码允许源代码。同样,我可以单步执行代码,当代码从nuget返回一个对象到Safari.Microsoft.AspNet.WebApi.Cors并添加时,会出现错误