「https://」で始まるページでブックマークレットが動作しない理由

「https://」で始まるページでブックマークレットが動作しない理由

Posted at March 13,2015 1:11 AM
Tag:[Bookmarklet, Firefox, GoogleChrome]

「https://」で始まるページでブックマークレットが動作しない理由を調べてみました。

1.問題点

はてなブックマークでブックマークをするときには、いつも公式のブックマークレットを使っています。

が、「https://」で始まるページではこのブックマークレットが動作しない場合があります。

FirefoxやChromeでこの現象が発生します。

ブックマークできない代表的なURLはTwitterやFacebookなどです。

なお、「https://」で始まるすべてのページでブックマークレットが動作しないという訳ではありませんし、ブックマークレットによっては動作するものもあります。

2.原因

調べてみたところ、ChromeやFirefoxでは「Content Security Policy」というものに対応しているためのようです。

「Content Security Policy(CSP)」は、クロスサイトスクリプティング(XSS)やデータインジェクション攻撃などを検出して軽減するためのセキュリティレイヤーを指します。

具体的にどういうことかというと、「https://」で始まるページにアクセスすると、HTTPレスポンスヘッダに、

content-security-policy:

というヘッダが設定されてくることがあります。

下はcontent-security-policyヘッダが設定されたHTTPレスポンスの例です。Firefoxでページを右クリックして「要素を調査」を選択し、「ネットワーク」→「ヘッダ」で確認できます。

ブラウザではこのcontent-security-policyヘッダを検知しているようです。

ただしW3C的にはCSPがブックマークレットの挙動を阻害するものではないらしいので、ブラウザの問題かもしれません。

Content Security Policy Level 2「5. Processing Model」

また、このヘッダが設定されていないhttpsのページでもブックマークレットが動作しないケースもありました。

詳細まで調べきれてないので認識誤りでしたらどこかでつぶやいてください。

3.対策

冒頭の問題点で記したはてなブックマークのブックマークレットについては、Firefoxは「はてなブックマーク Firefox 拡張」、Chromeは「はてなブックマーク GoogleChrome 拡張」で代替可能です。

4.参考サイト

参考サイトは下記です。ありがとうございました。

関連記事
zenback
人気エントリー
トラックバックURL


コメントする
greeting

*必須

*必須(非表示)


ご質問のコメントの回答については、内容あるいは多忙の場合、1週間以上かかる場合があります。また、すべてのご質問にはお答えできない可能性があります。予めご了承ください。

太字イタリックアンダーラインハイパーリンク引用
[サインインしない場合はここにCAPTCHAを表示します]

コメント投稿後にScript Errorや500エラーが表示された場合は、すぐに再送信せず、ブラウザの「戻る」ボタンで一旦エントリーのページに戻り(プレビュー画面で投稿した場合は、投稿内容をマウスコピーしてからエントリーのページに戻り)、ブラウザをリロードして投稿コメントが反映されていることを確認してください。

コメント欄に(X)HTMLタグやMTタグを記述される場合、「<」は「&lt;」、「>」は「&gt;」と入力してください。例えば「<$MTBlogURL$>」は「&lt;$MTBlogURL$&gt;」となります(全て半角文字)