問題是,當腳本在網頁上時,它通常是從網上獲取的,但是當代碼位於userscript中,即作爲插件的一部分時,它突然忘記了Access-Control-Allow-Origin: *
標題並停止響應跨域請求。無法管理在最新的(stable 12和beta v。1497)歌劇中在userjs(注入的腳本)中執行跨域xmlhttprequest,它是一個錯誤嗎?
下面是一些代碼,說明了這一點:
// ==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到我的服務器,從每一個網站接受呼叫,它忽略允許原產頭...
好吧,它是一個錯誤,或者我在這裏做錯了什麼?也許在請求中有一些選項可以「保證」它可以去那裏嗎?我不知道像xhr.allowcrossdomainaccess = true
或其他什麼?
你試過這個網頁(確切的網址)嗎? – Bergi 2012-07-12 13:25:41
http://apod.nasa.gov/ - 這是userscript,所以我選擇了一個可能沒有觸發js事件的所有功能的頁面,因爲它會讓我的例子變得更難。 – rsk82 2012-07-12 13:31:15
嗯,像一個魅力執行您的腳本(在Opera的控制檯)在http://apod.nasa.gov/apod/astropix.html – Bergi 2012-07-12 13:34:05