$http给出了"不允许访问-控制-允许-原始"错误在Chrome浏览器
$http gives "not allowed by Access-Control-Allow-Origin" error in Chrome
尝试访问http://www.kawa.net/works/ajax/romanize/romanize.cgi?q=%ED%96%88%EB%8B%A4?&mode=hangulis我只得到错误"不允许访问- control - allow - origin "。我试着在谷歌上搜索这个问题,发现了2个建议,一个说我应该用——allow-file-access-from-files启动Chrome,一个说我应该在WAAMP服务器上运行页面/脚本。这两种方法都不起作用。据我所知,这是出于安全考虑。我正在考虑简单地使$http请求转到我的服务器,而不是在那里我将有一个PHP文件,联系外部URL,而不是。我想我的问题是:是否有必要这样做,或者有任何方法我可以从客户端脚本做到这一点?
为了防止跨站脚本攻击,浏览器有一个内置的安全特性,可以防止javascript向与原始请求的HTML页面不在同一域的url发出HTTP(又名AJAX)请求。
[特别是Chrome限制任何HTTP请求时,原始的HTML文件是从本地文件系统(即文件:///…)收到的。正如你所说,你可以用——allow-file-access-from-files选项关闭它,或者通过总是从web服务器而不是直接从文件系统加载页面来修复它。
这被证明是相当限制的,因为有许多有效的情况下,您的javascript应用程序将希望访问位于不同域的第三方提供的web服务。在您的示例中,您希望访问一个将韩语字符罗马化的服务。
有很多方法可以绕过这个限制:
服务器上的代理
第一种方法是在自己的服务器上提供代理服务,将请求传递给第三方服务,然后将其返回给浏览器。浏览器正在向它获得原始HTML的同一服务器(即域)发出请求,因此很高兴。
<标题> JSONP h1> 二种方法是使用一种hack,比如JSONP (http://en.wikipedia.org/wiki/JSONP),它涉及到在HTML中动态地添加一个新的脚本标记,该标记将加载一个新的JavaScript文件并执行它。您必须配置服务器,以便在调用浏览器中的应用程序提供的函数时封装所请求的数据,从而打开数据并使用它。这是由AngularJS的$http服务通过.jsonp方法支持的:http://docs.angularjs.org/api/ng.$http#jsonp。要了解更多信息,请查看页面底部的示例。 <标题>歌珥h1> 后,也是最复杂的方法是利用称为跨域资源共享(CORS)的标准:http://en.wikipedia.org/wiki/Cross-origin_resource_sharing。这是现在大多数浏览器提供的标准,其中浏览器能够与托管在不同域上的资源的服务器协商,以同意可以返回某些数据。它不需要在客户端应用程序中进行任何更改,并且完全支持$http,但是它要求您设置服务器以便能够适当地响应。我猜你所指的服务不支持这个。顺便说一下,当CORS运行时,您将看到许多额外的OPTION请求被发送到服务器。这是协商机制的一部分,完全正常。 标题>标题>- Regex代码只允许一个空格
- 铬:“;未捕获的语法错误:意外的标记:"
- 可以设置“;文件名"发生错误时显示的内联脚本标记的
- JS表单提交"无法使用Chrome数据保护程序加载此页面.尝试重新加载页面.调试信息:POST CISmtuK
- 检测电话窃听,即:<a href="电话:xxx">在UIWebview上
- 正则表达式只允许 x 个整数
- CKEditor如何允许href="javascript:void(0)"在小部件中
- "访问控制允许起源”;通过javascript从http页面调用同一网站的httpsurl时出现问题
- "访问控制允许原点不允许原点为null"使用jQuery调用web服务时出错
- a4j:命令按钮不允许"<"在渲染中
- 得到"否'访问控制允许来源'标头存在于请求的资源上"对于我的JS AJAX而不是“;
- 如何避免“;否'访问控制允许来源'标头存在"javascript错误
- "Don't允许访问剪贴板“;不会'不允许在文本框中键入任何内容
- Lawnchair javascript数据"得到“;不允许我分配给另一个变量
- 得到"不允许加载本地资源“;尝试将MediaSource对象附加为HTML5视频标记的源时出错
- XMLHttpRequest无法加载“..否'访问控制允许来源'标头存在于请求的资源上"——J
- Valums文件上传器给出一个“;访问控制允许原点不允许原点为null"错误
- 如何获得“;publish_actions"允许使用JavaScript Facebook API
- 如何处理facebook授权时,用户点击“;不要允许"
- Don't允许使用“@"在文本区域