Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/24.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 $http给出了“http”;“访问控制不允许允许来源”;Chrome中的错误_Javascript_Angularjs - Fatal编程技术网

Javascript $http给出了“http”;“访问控制不允许允许来源”;Chrome中的错误

Javascript $http给出了“http”;“访问控制不允许允许来源”;Chrome中的错误,javascript,angularjs,Javascript,Angularjs,尝试访问时,我只得到了错误“访问控制不允许允许允许源代码”。我尝试用谷歌搜索这个问题,发现了两条建议,一条建议我应该用--Allow file access from files启动Chrome,另一条建议我应该在WAAMP服务器上运行页面/脚本。这两个都不起作用。据我所知,这是出于安全原因。我正在考虑简单地将$http请求转到我的服务器,在那里我将有一个与外部URL联系的PHP文件。我想我的问题是:是否有必要这样做,或者是否有任何方法可以通过客户端脚本这样做?为了防止跨站点脚本攻击,浏览器有一

尝试访问时,我只得到了错误“访问控制不允许允许允许源代码”。我尝试用谷歌搜索这个问题,发现了两条建议,一条建议我应该用--Allow file access from files启动Chrome,另一条建议我应该在WAAMP服务器上运行页面/脚本。这两个都不起作用。据我所知,这是出于安全原因。我正在考虑简单地将$http请求转到我的服务器,在那里我将有一个与外部URL联系的PHP文件。我想我的问题是:是否有必要这样做,或者是否有任何方法可以通过客户端脚本这样做?

为了防止跨站点脚本攻击,浏览器有一个内置的安全功能,防止javascript生成HTTP(又称AJAX)对URL的请求与最初请求的HTML页面不在同一域中

[特别是,当从本地文件系统(即。file:///...)。如您所述,您可以使用--allow file access from files选项关闭此选项,或者通过始终从web服务器而不是直接从文件系统加载页面来解决此问题。]

事实证明,这是相当严格的,因为在许多有效的情况下,javascript应用程序都希望访问位于不同域上的第三方提供的web服务。在您的情况下,您希望访问将韩语-韩语字符罗马化的服务

因此,有很多方法可以绕过这一限制:

服务器上的代理 第一种是在您自己的服务器上提供代理服务,将请求传递给第三方服务,然后将其返回到浏览器。浏览器向从中获取原始HTML的同一服务器(即域)发出请求,因此很高兴

JSONP 第二种是使用hack,比如JSONP(),它涉及到在HTML中动态添加一个新的脚本标记,该标记将加载一个新的JavaScript文件并执行它。您必须配置服务器,以便在调用应用程序在浏览器中提供的函数时打包您请求的数据,以展开数据并使用它。AngularJS$http服务使用.jsonp方法支持这一点:.$http#jsonp。查看页面底部的示例以了解更多信息

科尔斯 最后一种也是最复杂的方法是利用称为跨源资源共享(CORS)的标准。这是大多数浏览器提供的标准,现在浏览器可以与托管不同域上资源的服务器协商,以同意可以返回某些数据。它不需要在客户端应用程序中进行任何更改,因此$http完全支持它,但它要求您设置服务器以便能够适当响应。我猜您所指的服务不支持这一点。顺便说一下,当CORS运行时,您将看到许多额外的选项请求被发送到服务器。这是协商机制的一部分,完全正常。

请查看-跨站点请求伪造(XSRF)保护部分。这将更多地解释你的问题。