繁体   English   中英

如何从Opera的外部页面向本地服务器发出跨域请求?

[英]How can I make cross-domain requests to a local server from an external page in Opera?

我有一个系统负责将作业分配给在不同机器上运行的一组浏览器。 每个浏览器都会重新加载一个等待作业进入的页面。

每项工作的一件事是向本地计算机上运行的本地服务器发出跨域JSONP请求,以便从系统获取一些信息。 除了Opera之外,这在我尝试的每个浏览器中都有效。

这是我用来发出请求的jQuery代码:

$.ajax({
  url: "http://10.20.30.40:8000/...",
  dataType: "jsonp",
  data: someData
  success: function(data) { ... }
});

10.20.30.40主机是本地IP地址,用于标识使用浏览器在计算机上运行的本地服务器。 发出此请求的页面是从像blah.internal.example.com这样的域名加载的,该域名对我们网络中的所有计算机都是可见的。

从Opera(我使用12.02)做出的第一个这样的请求成功了。 但是,后来以相同方式提出的请求实际上从未实现过。 它们不会显示在检查器的网络选项卡中。 在控制台中,将显示一条消息,指出Linked script not loaded

我相信这条消息(以及缺少请求)是由Opera的跨网络安全引发的, 该博客文章对此进行了描述。 在Stackexchange上, 这个答案提出了一种解决方法,但它需要用户交互。 对于我的用例,浏览器由脚本启动,停止和运行,因此用户交互不是一种选择。

有没有办法完全禁用Opera中的跨网络安全性,或者从特定“可信”主机加载的页面? 我需要一个我可以在首选项或opera:config进行的更改opera:config将在会话期间发粘。 (所有这些计算机都在内部控制页面上的内部网络上运行,所以我不担心跨网络攻击。)

如果您可以在Opera 12+(以及其他所有浏览器,甚至是IE8)中使用CORS,为什么还要使用JSONP呢? 它就像魅力一样。

只是不要忘记将必需的Access-Control-Allow-*标头添加到本地服务器。

有关Opera dev网络的更多信息: http//dev.opera.com/articles/view/dom-access-control-using-cross-origin-resource-sharing/

尝试完全禁用Opera中的安全功能:config #Cross%20Network(似乎SO不会让我链接到那个..)

当然,如果你已经禁用了安全功能,你应该谨慎地冲浪.. ;-)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM