问题是当脚本在页面上时它可以工作,通常是从网上获取的,但是当代码位于作为插件的一部分的用户脚本中时,它突然忘记了有Access-Control-Allow-Origin: *
标题并停止响应跨域请求.
这是一些说明这一点的代码:
// ==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 站点,因为它没有现代网站的黑白,因此无需过滤事件。
在这种状态下它可以正常工作,但是当我将此 url 指向我的服务器时,它接受来自每个站点的调用,它会忽略 allow-origin 标头...
好的,这是一个错误,还是我在这里做错了什么?也许请求对象上的一些选项可以“确保”它可以去那里?我不知道喜欢xhr.allowcrossdomainaccess = true
还是什么?