From 33058f2b292b3a581333bdfb21b8f671898c5060 Mon Sep 17 00:00:00 2001 From: Peter Bengtsson Date: Tue, 8 Dec 2020 14:40:17 -0500 Subject: initial commit --- .../fetch_api/cross-global_fetch_usage/index.html | 40 ++++++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 files/ja/web/api/fetch_api/cross-global_fetch_usage/index.html (limited to 'files/ja/web/api/fetch_api/cross-global_fetch_usage/index.html') diff --git a/files/ja/web/api/fetch_api/cross-global_fetch_usage/index.html b/files/ja/web/api/fetch_api/cross-global_fetch_usage/index.html new file mode 100644 index 0000000000..ab0e717f27 --- /dev/null +++ b/files/ja/web/api/fetch_api/cross-global_fetch_usage/index.html @@ -0,0 +1,40 @@ +--- +title: グローバル間フェッチの使用 +slug: Web/API/Fetch_API/Cross-global_fetch_usage +tags: + - Cross global + - Fetch + - edge case + - relative URL +translation_of: Web/API/Fetch_API/Cross-global_fetch_usage +--- +

{{DefaultAPISidebar("Fetch API")}}

+ +

この記事では、フェッチ(および潜在的に同種のリソース取得の振る舞いを示す他の API)で発生するエッジケースについて説明します。 相対 URL を含む オリジン間フェッチ(cross-origin fetch)が {{htmlelement("iframe")}} から開始される場合、相対 URL は iframe のロケーションではなく現在のグローバルなロケーションに対して解決していました。

+ +

エッジケース

+ +

多くのサイトは、このエッジケースに立ち向かうことはありません。 それを見るには次のようにします。

+ + + +

問題

+ +

以前は、例えば次のように、現在のグローバルに対して相対 URL を解決していました。

+ +
let absolute = new URL(relative, window.location.href)
+ +

これ自体は問題ではありません。 この種の振る舞いを示すさまざまな API が仕様で定義されている振る舞いと矛盾してそれを実行しているだけであり、それがさらに問題を引き起こす可能性があります。

+ +

解決策

+ +

Firefox 60 以降では、Mozilla は、使用している fetch() 関数を所有するグローバルに対して相対 URL を解決します({{bug(1432272)}} を参照)。 したがって、上記の場合、次のように、iframe のロケーションに対して解決します。

+ +
let absolute = new URL(relative, frame.contentWindow.location.href)
+ +

今後の潜在的な問題を軽減するために、この振る舞いの変更に合わせた新しい仕様を取得することについて、多くの議論が進行中です。

-- cgit v1.2.3-54-g00ecf