2016-09-15 22 views
2

にworrkしないのはなぜ私はhereから以下のブックマークレットを取っ:ブックマークレットは、Twitter

javascript:var a=''; 
for(var ln=0;ln<document.links.length;ln++) 
    {var lk=document.links[ln]; 
    a+=ln+': <a href=\''+lk+'\' title=\''+lk.text+'\'>'+lk+'</a><br>\n'; 
    } 
w=window.open('','Links','scrollbars,resizable,width=800,height=600'); 
w.document.write(a) 

を、それがさえずりメインのサイトでは動作しない理由: https://twitter.com/search?q=from%3Abmw%20since%3A2016-07-01%20until%3A2016-07-31&src=typd

それはモバイルサイト上で完璧に動作します: https://m.twitter.com/search?q=from%3Abmw%20since%3A2016-07-01%20until%3A2016-07-31&src=typd

このブックマークレットを使用するには、ブックマークバーにドラッグしてからクリックします。

+0

私のために働きますtwitter main ... – albert

+0

@albert:私はLinuxのfedora + firefox/chormeを使用していますが、動作しません。あなたのOS /ブラウザは何ですか? – PHA

+1

chrome/os x capitan – albert

答えて

2

これはCSP(コンテンツセキュリティポリシー)の問題です。

サイトでは、CSPを使用して、実行が許可されているスクリプトを決定します。 Twitter、GitHubなどのインラインスクリプトを無効にすると、ブックマークレットがサイト上で使用できなくなります。

CSP仕様では、ブラウザーがブックマークレット、ユーザースクリプトなどを機能させるためにこのような制限をバイパスできるようになっていますが、それを強制するものではありません。 (それはに使用されるが、文言はからべきかもしれに変更されました。)残念ながら、ブックマークレットについてFirefox doesn't seem to allow this、あなたは(about:configsecurity.csp.enable)完全にCSPを無効にするために喜んでいる場合を除き、私は、任意の設定を認識していませんよこれを回避する。 (拡張機能は引き続き機能します)。これはChromeで動作しますが、@albertが問題を再現できなかった理由です。

あなた自身で試してみてください:Twitterに行き、アドレスバーにjavascript:alert('hello')のようなものを入力してください。何も起こらず、JSコンソールを開いてセキュリティログを有効にすると、CSPがあなたのスクリプトを実行できないことがわかります。

したがって、要するに、ブックマークレットは、想定されるセキュリティメリットの祭壇で犠牲にされました。

関連する問題