2015-11-11 31 views
0

我一直在試圖將一個小書籤變成一個小型的開發環境,我可以用它來測試一些javascript,並且可以很容易地發送命令並快速更新服務器上的代碼以查看結果。這有一半使用方法的工作,我發現在這個網站和谷歌,但它似乎不工作得很好,有時隨機不工作。最終目標是要有一個書籤,我可以從任何頁面點擊它,並加載我保存在我的服務器上的JavaScript文件。我已經創建了以下兩個書籤工具,試圖得到這個工作:無法從其他服務器加載腳本 - 內容安全策略問題?

失敗方法1:

javascript: 
var s = document.createElement('script'); 
s.type='text/javascript'; 
document.body.appendChild(s); 
s.src='//smewth.com/test.js'; 
void(0); 

方法1在一行書籤形式:javascript: var s = document.createElement('script'); s.type='text/javascript'; document.body.appendChild(s); s.src='//smewth.com/test.js'; void(0);


失敗方法2:

javascript:(
function(){ 
    var imported = document.createElement('script'); 
    imported.type='text/javascript'; 
    imported.src = 'https://smewth.com/test.js'; 
    document.head.appendChild(imported); 
})(); 

方法2在一行書籤形式:javascript:(function(){ var imported = document.createElement('script'); imported.type='text/javascript'; imported.src = 'https://smewth.com/test.js'; document.head.appendChild(imported); })();

我通過從(http://kickassapp.com/)分解kickass小書籤得到方法1。我從他們的網站獲得的實際效果在我的瀏覽器上沒有問題。我甚至直接用他們用來加載我的URL的URL進行替換。我在本網站上搜索時發現的第二種方法,實際上它工作了一小會兒,並因某種未知的原因停止工作(可能是不同的瀏覽器)。我試圖將這個腳本對象追加到頭部和身體上,而沒有改善結果。

我創建了test.js腳本只是爲了這篇文章,它包含一個簡單的提示框聲明:

$$ [/]# cat test.js 
alert("hi"); 
$$ [/]# 

注意:當我做這與嵌入的書籤本身的代碼,而無需追加到頭/體對象,然後它工作正常,像這樣的:

javascript:%20alert("hi"); 

我也注意到,有兩種方法,代碼實際上是越來越注入但是我沒有看到代碼永遠當執行頁我點擊書籤。有沒有人知道哪種方法是最好的或類似的做到這一點,所以我可以通過我在遠程服務器(可靠地)更新的頁面加載JavaScript?也許我需要附加到不同的對象?

謝謝你的幫助。

-Jeff

UPDATE:我顯示此工程在這個網站是加載,但它不工作,當你在如google.com網站。不知道有什麼區別或如何適應這種情況,google.com也有頭部和身體對象。我在一些網站上展示了這些作品,有些則沒有。

+0

這可能是由於**內容安全策略**引起的,但這並不能解釋爲什麼我可以在google.com上加載kickass書籤,而且我無法加載我在其上做的那個。 – Jeff82

+1

您是否在瀏覽器中遇到XSS錯誤或CSP錯誤?如果是XSS,您可能想使用JSONP繞過。 –

+0

感謝您的回覆。其實我並沒有在瀏覽器中顯示任何錯誤。點擊書籤後,我會在源代碼中顯示