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

**URL:** https://meta.discourse.org/t/no-referer-no-embedding/163524
**Category:** Support
**Created:** [2020 年 9 月 9 日午後 3:38 UTC](https://meta.discourse.org/t/no-referer-no-embedding/163524 "2020-09-09T15:38:34Z")
**Posts on this page:** 6
**Page:** 1

<div class="post-metadata">

### Author: ![AxelN](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/axeln/32/120662_2.png) [@AxelN](https://meta.discourse.org/u/AxelN)
#### Post date: [2020 年 9 月 9 日午後 3:38 UTC](https://meta.discourse.org/t/no-referer-no-embedding/163524/1 "2020-09-09T15:38:34Z")

</div>

こんにちは、

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

[New ROOT Web Site! - Blog - ROOT Forum](https://root-forum.cern.ch/embed/comments?embed_url=https%3A%2F%2Froot.cern%2Fblog%2Fnew-web-site%2F) を Firefox のプライベートウィンドウで確認したところ、HTTP 400 エラーが発生しました。その後、リクエストを編集して `Referer: https://root.cern/blog/new-web-site/` を追加すると、400 エラーが 200（成功）に変わりました。

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

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

---

<div class="post-metadata">

### Author: ![simon](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/simon/32/339122_2.png) [@simon](https://meta.discourse.org/u/simon)
#### Post date: [2020 年 9 月 10 日午後 4:19 UTC](https://meta.discourse.org/t/no-referer-no-embedding/163524/2 "2020-09-10T16:19:20Z")

</div>

> [@AxelN](#):
>
> ご自身で試してみてください。リファラーを抑制するプライベート Firefox ウィンドウに切り替えると、埋め込みが機能しなくなります。

はい、再現できます。

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

---

<div class="post-metadata">

### Author: ![AxelN](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/axeln/32/120662_2.png) [@AxelN](https://meta.discourse.org/u/AxelN)
#### Post date: [2020 年 9 月 10 日午後 4:35 UTC](https://meta.discourse.org/t/no-referer-no-embedding/163524/3 "2020-09-10T16:35:43Z")

</div>

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

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

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

では、アックスル

---

<div class="post-metadata">

### Author: ![AxelN](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/axeln/32/120662_2.png) [@AxelN](https://meta.discourse.org/u/AxelN)
#### Post date: [2020 年 9 月 14 日午前 9:58 UTC](https://meta.discourse.org/t/no-referer-no-embedding/163524/4 "2020-09-14T09:58:59Z")

</div>

こんにちは、

よりシンプルな解決策を見つけました。これはおそらく [Embed Discourse comments on another website via Javascript](https://meta.discourse.org/t/embedding-discourse-comments-via-javascript/31963) で言及されるべきでしょう。

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

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

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

では、Axel より。

---

<div class="post-metadata">

### Author: ![gja](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/gja/32/165241_2.png) [@gja](https://meta.discourse.org/u/gja)
#### Post date: [2020 年 9 月 16 日午後 4:32 UTC](https://meta.discourse.org/t/no-referer-no-embedding/163524/5 "2020-09-16T16:32:34Z")

</div>

Chrome 85 以降、これはデフォルトのブラウザ標準となるため（[Blog &nbsp;|&nbsp; Chrome for Developers](https://developers.google.com/web/updates/2020/07/referrer-policy-new-chrome-default%EF%BC%89%E3%80%81%E3%81%93%E3%81%93%E3%81%A7%E4%BB%A3%E6%9B%BF%E6%A1%88%E3%82%92%E6%A4%9C%E8%A8%8E%E3%81%99%E3%81%B9%E3%81%8D%E3%81%A7%E3%81%97%E3%82%87%E3%81%86%E3%81%8B%EF%BC%9F)

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

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

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

---

<div class="post-metadata">

### Author: ![AxelN](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/axeln/32/120662_2.png) [@AxelN](https://meta.discourse.org/u/AxelN)
#### Post date: [2020 年 9 月 16 日午後 7:17 UTC](https://meta.discourse.org/t/no-referer-no-embedding/163524/6 "2020-09-16T19:17:28Z")

</div>

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