javascript - 无法在最新(稳定版 12 和 beta v. 1497)opera 的 userjs(注入(inject)脚本)中执行跨域 xmlhttprequest,这是一个错误吗?

标签 javascript xmlhttprequest cross-domain opera userscripts

问题是,当脚本在页面上时它可以工作,通常是从网上获取的,但是当代码位于用户脚本中时,作为插件的一部分,突然它忘记了 Access- Control-Allow-Origin: * header 并停止响应跨域请求。

下面是一些说明这一点的代码:

// ==UserScript==
// @include     *nasa.gov*
// ==/UserScript==

var xhr = new window.XMLHttpRequest();
xhr.onreadystatechange = function () {
  alert('state changed: ' + this.readyState + "\nstatus: " + this.status);
};
xhr.onload = function(){
  alert('document loaded');
};
xhr.open('GET','http://apod.nasa.gov');
xhr.send(null);

我选择了 apod 站点,因为它没有现代网站的 b&w,所以不需要过滤事件。

在这种状态下它工作正常,但是当我将此 url 指向我的服务器接受来自每个站点的调用时,它会忽略 allow-origin header ...

好的,这是一个错误,还是我在这里做错了什么?也许请求对象的某些选项可以“确保”它可以去那里?我不知道像 xhr.allowcrossdomainaccess = true 还是什么?

最佳答案

(你已经想通了 - 但只是为了给这个问题一个正确的答案..)

注入(inject)的脚本在页面中以(大部分)正常的安全权限运行——与页面脚本一样。因此,您通常无法通过注入(inject)的脚本执行跨域请求。

另见 https://stackoverflow.com/a/9614760/163549 Opera 中的 CORS 实现状态。

关于javascript - 无法在最新(稳定版 12 和 beta v. 1497)opera 的 userjs(注入(inject)脚本)中执行跨域 xmlhttprequest,这是一个错误吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11451922/

相关文章:

javascript - 输入回文数

javascript - 如何获取 XMLHttpRequest 中的响应 url?

get - 获取 GET 和 POST 参数

javascript - 使用跨域帖子发送凭据?

javascript - 获取跨域 iFrame 内文档的高度

javascript - 按字母顺序排列的 Angular 过滤器

javascript - 如何在javascript中更简单地处理事件?

javascript jQuery - 给定一个逗号分隔的列表,如何确定一个值是否存在

javascript - XMLHttpRequest() 设置间隔

ssl - 您可以为带有 ssl 证书的子域设置别名吗