`Referer:`なし、埋め込みなし

こんにちは、

Jekyll への Discourse 埋め込みを New ROOT Web Site! - ROOT で使用しています。素晴らしい動作です!ただし、ブラウザが Referer: ヘッダーを抑制している場合は 400 Bad Request が発生します。ご自身でお試しください。プライベート Firefox ウィンドウ(リファラーを抑制する)に切り替えると、埋め込みが機能しなくなります。Safari もリファラーの扱いについてやや厳格なため、同様の問題が発生します。

New ROOT Web Site! - Blog - ROOT Forum を Firefox のプライベートウィンドウで確認したところ、HTTP 400 エラーが発生しました。その後、リクエストを編集して Referer: https://root.cern/blog/new-web-site/ を追加すると、400 エラーが 200(成功)に変わりました。

「任意のオリジンの埋め込みを許可」は有効になっています。埋め込み先サイトは 1 つのみです。これを動作させる方法はありますか?

よろしくお願いいたします、
Axel

「いいね!」 4

はい、再現できます。

https://blog.codinghorror.com/the-cloud-is-just-someone-elses-computer/ の埋め込みコメントは、Firefox のプライベートウィンドウでも問題なく動作する点が興味深いですね。この問題はドメインに関連しているのでしょうか?あなたのブログは root.cern にあり、フォームは root-forum.cern.ch にあります。

「いいね!」 2

こんにちは、サイモンさん、

ご確認いただきありがとうございます!これはドメイン名の違いに関連している可能性が非常に高いかもしれません。ブラウザは、同じドメインへのリクエストに対してはリファラーを提供しますが、異なるドメインに対しては提供しないことがあるからです。しかし、それは興味深いことではあるものの、これをどう解決できるかはまだ見えていません。root.cern をフォーラムのドメインとして使うことはできませんし、ドメインを跨いだ埋め込みは重要な機能であり、非常に有用でした。プライバシー保護の向上に伴い、これは単にリスクが高まっているだけなのでしょうか?それとも、何か解決策がお考えでしょうか?

私が試してみようと思っているのは、root.cern/forum から root-forum.cern.ch へのリバースプロキシを設定することです。そうすれば、埋め込みが同じホスト上にあるかのように行え、リファラーも維持できるかもしれません。また連絡します :slight_smile:

では、アックスル

「いいね!」 2

こんにちは、

よりシンプルな解決策を見つけました。これはおそらく Embed Discourse comments on another website via Javascript で言及されるべきでしょう。

クロスサイト埋め込みの場合、埋め込みページに以下のいずれかを追加してください。

  • <meta name="referrer" content="strict-origin">Path Allowlist/.* に設定(パスが提供されないため)、または
  • <meta name="referrer" content="no-referrer-when-downgrade"> と実際の Path Allowlist を設定。

Referrer-Policy header - HTTP | MDN で述べられているように、「ブラウザ側ではより厳格なデフォルト値への移行に向けた取り組みが進んでいます」。Discourse の埋め込み機能は、クロスホスト埋め込みにおいて従来のデフォルト値に依存しています。

では、Axel より。

「いいね!」 2

Chrome 85 以降、これはデフォルトのブラウザ標準となるため(Blog  |  Chrome for Developers

以下の 3 つの条件をすべて満たすリクエストを受け付けることは可能でしょうか?

  • リクエストに discourseEmbedUrlReferer の両方が含まれている
  • リファラーが discourseEmbedUrl のオリジンに設定されている
  • discourseEmbedUrl が埋め込みルールのいずれかに一致している

大多数のユーザーにとって、discourseEmbedUrl を渡すのは容易だと考えられます。

警告ですが、Tejas さん、私の知る限り meta タグがない場合、Safari と Firefox(プライベートモード)は Referer ヘッダーを完全に抑制します。ご提案の方法は Chrome 85 以上では機能するかもしれませんが、meta タグを追加する方がより堅牢で汎用性が高く、またほとんどの埋め込みにとって十分に簡単だと推測されます。