gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-29 14:59:20 25 4
gpt4 key购买 nike

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

每个作业做的一件事是向本地机器上运行的本地服务器发出跨域 JSONP 请求,以便从系统中获取一些信息。这适用于我尝试过的所有浏览器,但 Opera 除外。

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

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

10.20.30.40 host为 native IP地址,标识 native 运行浏览器的本地服务器。发出此请求的页面是从像 blah.internal.example.com 这样的域名加载的,它对我们网络内的所有机器都是可见的。

从 Opera(我使用的是 12.02)发出的第一个此类请求成功。但是,以相同方式发出的后续请求从未真正发出过。它们不会出现在检查器的网络选项卡中。在控制台中,会显示一条消息,指出 Linked script not loaded

我相信此消息(以及缺少请求)是由 Opera 的跨网络安全触发的,这在 this blog post 中有描述。 .在 Stackexchange 上,this answer提出了一种解决方法,但它需要用户交互。对于我的用例,浏览器由脚本启动、停止和运行,因此用户交互不是一种选择。

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

最佳答案

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

只是不要忘记将所需的 Access-Control-Allow-* header 添加到您的本地服务器。

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

关于javascript - 如何从 Opera 的外部页面向本地服务器发出跨域请求?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12486960/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com