```
`mediatype` は [MIME タイプ](/ja/docs/Web/HTTP/Basics_of_HTTP/MIME_types)で, 例えば `'image/jpeg'` で JPEG 画像を表します。省略時の既定値は `text/plain;charset=US-ASCII` です。
-データが文字ならば、そのまま埋め込めます (埋め込む文書タイプに応じて、適切な実体参照やエスケープを行なってください)。それ以外では `base64` を指定し、 base64 エンコードしたバイナリデータを埋め込みます。 MIME タイプについての詳しい情報は[こちら](/ja/docs/Web/HTTP/Basics_of_HTTP/MIME_types)や[こちら](/ja/docs/Web/HTTP/Basics_of_HTTP/MIME_types/Complete_list_of_MIME_types)にあります。
+データに [RFC 3986 で予約文字として定義されている文字](https://datatracker.ietf.org/doc/html/rfc3986#section-2.2)が含まれている場合、または空白文字、改行文字、その他の出力されない文字が含まれている場合は、それらの文字は{{Glossary("Percent-encoding", "パーセントエンコード")}}でエンコードする必要があります。
+
+データが文字ならば、そのまま埋め込めます (埋め込む文書タイプに応じて、適切な実体参照やエスケープを行なってください)。それ以外では `base64` を指定し、 base64 エンコードしたバイナリーデータを埋め込みます。 MIME タイプについての詳しい情報は[こちら](/ja/docs/Web/HTTP/Basics_of_HTTP/MIME_types)や[こちら](/ja/docs/Web/HTTP/Basics_of_HTTP/MIME_types/Common_types)にあります。
例:
-- `data:,Hello%2C%20World!`
- - : 平易な text/plain データです。引用符や空白には[パーセントエンコーディング](/ja/docs/Glossary/percent-encoding) (URL エンコーディング) を使用します。また、 CSV データ (MIME タイプは "text/csv") もスプレッドシートの行を区切るための改行文字を保存するためにパーセントエンコーディングが必要です。
+- `data:,Hello%2C%20World%21`
+ - : text/plain データで `Hello, World!` です。なお、カンマは{{Glossary("Percent-encoding", "パーセントエンコード")}}で `%2C`となり、スペースは `%20` となります。
- `data:text/plain;base64,SGVsbG8sIFdvcmxkIQ==`
- : 同じ内容の base64 エンコード版
-- `data:text/html,%3Ch1%3EHello%2C%20World!%3C%2Fh1%3E`
- - : `Hello, World!
` という HTML 文書
-- `data:text/html,`
- - : JavaScript のアラートを実行する HTML 文書。終了タグが必要ですので注意してください。
+- `data:text/html,%3Ch1%3EHello%2C%20World%21%3C%2Fh1%3E`
+ - : HTML 文書で `Hello, World!
`
+- `data:text/html,%3Cscript%3Ealert%28%27hi%27%29%3B%3C%2Fscript%3E`
+ - : HTML 文書で `` であり、JavaScript のアラートを実行する HTML 文書。終了タグが必要ですので注意してください。
## データの base64 形式へのエンコード
-Base64 はバイナリからテキストへのエンコード方法の集まりで、バイナリデータを 64 進数表現に変換することで ASCII 文字列形式にするものです。 ASCII 文字のみから成るため、 Base64 の文字列は一般に URL でも安全ですので、データ URL のデータのエンコードに利用することができます。
+Base64 は、バイナリーからテキストへエンコードする方式の総称で、バイナリーデータを {{Glossary("ASCII")}} 文字列形式へ、64 進表現に変換することで表します。URL 構文で許可されている文字(「URL セーフ」)のみで構成されているため、データ URL にバイナリーデータを安全にエンコードすることができます。Base64 は、URL で特別な意味を持つ可能性のある文字 `+` と `/` を使用することができます。データ URL には URL パス区間やクエリー引数がないため、このコンテキストではこのエンコード方式は安全です。
### Javascript でのエンコード
@@ -60,16 +63,16 @@ base64 a.txt>b.txt
### Microsoft Windows でのエンコード
-Windows では、 [Convert.ToBase64String](https://docs.microsoft.com/ja-jp/dotnet/api/system.convert.tobase64string?view=net-5.0) を PowerShell で使用することで Base64 エンコードを行うことができます。
+Windows では、 [Convert.ToBase64String](https://learn.microsoft.com/ja-jp/dotnet/api/system.convert.tobase64string?view=net-5.0) を PowerShell で使用することで Base64 エンコードを行うことができます。
-```
+```plain
[convert]::ToBase64String([Text.Encoding]::UTF8.GetBytes("hello"))
# outputs to console: aGVsbG8=
```
他にも、 GNU/Linux シェル ([WSL](https://ja.wikipedia.org/wiki/Windows_Subsystem_for_Linux) など) が `base64` ユーティリティを提供しています。
-```
+```bash
bash$ echo -n hello | base64
# outputs to console: aGVsbG8=
```
@@ -78,44 +81,43 @@ bash$ echo -n hello | base64
この章では `data` の URL を作ったり使ったりするときに、よく起こる問題について述べます。
-```
-data:text/html,lots of text...bottom?arg=val
+```html
+data:text/html,lots of text…
bottom?arg=val
```
これは次の内容の HTML リソースを表します。
-```
-lots of text...bottom?arg=val
+```html
+lots of text…
+
bottom?arg=val
```
- 構文
- : `data` URL の書式は非常に単純ですが、"データ" 部分の前にカンマを置くのを忘れがちです。忘れるとデータが正しく base64 形式にエンコードされません。
- HTML におけるフォーマット
- - : `data` はファイル内でファイルを提供しますが、外側の文書に比べて幅がとても広くなる可能性があります。 URL としては、 `data` はホワイトスペース (改行、タブ、空白) で体裁を整えることができるはずですが、 [base64 エンコードをすると起こる問題](http://bugzilla.mozilla.org/show_bug.cgi?id=73026#c12) があります。
+ - : `data` はファイル内でファイルを提供しますが、外側の文書に比べて幅がとても広くなる可能性があります。 URL としては、 `data` はホワイトスペース (改行、タブ、空白) で体裁を整えることができるはずですが、 [base64 エンコードをすると起こる問題](https://bugzil.la/73026#c12) があります。
- 長さの制限
- : ブラウザーは特定の最大長のデータに対応する必要はありません。たとえば、 Opera 11 ブラウザーでは URL が 65535 文字に制限されており、 `data` URL は 65529 文字に制限されています (65529 文字は、 MIME タイプを指定せずにプレーンの `data:` を使用した場合、ソースではなくエンコードされたデータの長さです)。Firefox 97 以降 では、最大 32MB の `data` URL がサポートされます (97 より前のバージョンでは、制限は約 256MB でした)。 Chromium は 512MB 以上の URL 、Webkit (Safari) は 2048MB 以上の URL をサポートしています。
- エラー処理の欠如
- : メディア内の不正な引数や、 `'base64'` の定義内の打ち間違いは無視され、何もエラーは出ません。
-- クエリ文字列のサポートの欠如、など
- - : データ URL のデータ部分は不透明 (opaque) なので、データ URL と一緒にクエリ文字列 (`?parameter-data` という構文で表されるページ固有のパラメータ) を使うと、データ URL が表現するデータに単にクエリ文字列が含まれたものになります。
+- クエリー文字列のサポートの欠如、など
+ - : データ URL のデータ部分は不透明 (opaque) なので、データ URL と一緒にクエリー文字列 (`?parameter-data` という構文で表されるページ固有のパラメーター) を使うと、データ URL が表現するデータに単にクエリー文字列が含まれたものになります。
- セキュリティの課題
- : 多数のセキュリティ問題 (フィッシングなど) がデータ URL に関連付けられており、ブラウザーの最上位でそれらに移動しています。このような問題を軽減するために、Firefox 59+ (リリース版、Nightly/Beta は 58 以降) では `data:` URL へのトップレベルのナビゲーションがブロックされており、他のブラウザーがすぐに対応することを期待しています。詳細については、[Firefox 58 におけるデータ URL へのトップレベルナビゲーションのブロック](https://blog.mozilla.org/security/2017/11/27/blocking-top-level-navigations-data-urls-firefox-58/)を参照してください。
## 仕様書
-| 仕様書 | 題名 |
-| --------------- | --------------------- |
-| {{RFC("2397")}} | The "data" URL scheme |
+{{Specifications}}
## ブラウザーの互換性
-{{Compat}}
+{{compat}}
## 関連情報
-- [Base64](/ja/docs/Glossary/Base64)
-- [パーセントエンコーディング](/ja/docs/Glossary/percent-encoding)
-- {{domxref("WindowBase64.atob","atob()")}}
-- {{domxref("WindowBase64.btoa","btoa()")}}
-- [CSS `url()`](/ja/docs/Web/CSS/uri)
-- [URI](/ja/docs/Glossary/URI)
+- {{Glossary("Base64")}}
+- {{Glossary("Percent-encoding", "パーセントエンコーディング")}}
+- {{domxref("WorkerGlobalScope.atob()", "atob()")}}
+- {{domxref("WorkerGlobalScope.btoa()", "btoa()")}}
+- CSS の {{CSSXref("url", "url()")}}
+- {{Glossary("URI")}}
diff --git a/files/ja/web/uri/schemes/resource/index.md b/files/ja/web/uri/schemes/resource/index.md
index 421ffdaf992bd7..8b8d5b3c9fb5f9 100644
--- a/files/ja/web/uri/schemes/resource/index.md
+++ b/files/ja/web/uri/schemes/resource/index.md
@@ -1,34 +1,35 @@
---
title: リソース URL
slug: Web/URI/Schemes/resource
-original_slug: Web/HTTP/Basics_of_HTTP/Resource_URLs
+l10n:
+ sourceCommit: 6b730e3cfdf0f51940b44efa71bd59c84ce76e71
---
-{{HTTPSidebar}}{{non-standard_header}}
+{{QuickLinksWithSubpages("/ja/docs/Web/URI")}}{{non-standard_header}}
`resource:` というスキームのプレフィックスが付いたリソース URL は、Firefox と Firefox のブラウザー拡張機能によってリソースを内部的に読み込むために使用されますが、情報の一部はブラウザーが接続するサイトでも利用できます。
## 構文
-リソース URL は、接頭辞 (`resource:`) とロードするリソースを指す URL の 2 つの部分で構成されます。
+リソース URL は、接頭辞 (`resource:`) と読み込むするリソースを指す URL の 2 つの部分で構成されます。
-```
-resource://
+```url
+resource://
```
例
-```
+```url
resource://gre/res/svg.css
```
リソース URL ('->') に矢印がある場合は、最初のファイルが次のファイルにロードされたことを意味します。
-```
+```url
resource:// ->
```
-より一般的な詳細については、[ウェブ上のリソースの識別](/ja/docs/Web/HTTP/Basics_of_HTTP/Identifying_resources_on_the_Web)を参照してください。
+より一般的な詳細については、[ウェブ上のリソースの識別](/ja/docs/Web/URI)を参照してください。
この記事では、組み込みのリソースを指すために Firefox が内部的に使用するリソース URI に焦点を当てます。
@@ -36,11 +37,11 @@ resource:// ->
`resource:` URL によって共有される情報の一部はウェブサイトで利用できるため、ウェブページは内部スクリプトを実行し、デフォルトの設定を含む Firefox の内部リソースを調べることができます。
-たとえば、[Browserleaks のスクリプト](https://www.browserleaks.com/firefox)は、サイトで実行されている簡単なスクリプトでクエリが実行されたときに Firefox が表示する内容を強調表示します (コードは にあります)。
+たとえば、[Browserleaks のスクリプト](https://browserleaks.com/resource-urls)は、サイトで実行されている簡単なスクリプトでクエリーが実行されたときに Firefox が表示する内容を強調表示します(コードは にあります)。
ファイル firefox.js は、プリファレンス名と値を pref() 関数に渡します。 例えば、
-```
+```url
http://searchfox.org/mozilla-central/rev/48ea452803907f2575d81021e8678634e8067fc2/browser/app/profile/firefox.js#575
```
@@ -59,7 +60,7 @@ http://searchfox.org/mozilla-central/rev/48ea452803907f2575d81021e8678634e8067fc
> [!NOTE]
> ウェブと拡張機能の開発者がリソース URL をもう使用しようとしないことをお勧めします。彼らの使い方はうまくいきませんでした。そしてほとんどの使用法はこれ以上動作しません。
-## 仕様
+## 仕様書
resource: はどの仕様書にも定義されていません。
@@ -69,6 +70,6 @@ resource: は Firefox のみ対応
## 関連情報
-- [ウェブ上のリソースの識別](/ja/docs/Web/HTTP/Basics_of_HTTP/Identifying_resources_on_the_Web)
-- [URL とは何か](/ja/docs/Learn/Common_questions/What_is_a_URL)
+- [ウェブ上のリソースの識別](/ja/docs/Web/URI)
+- [URL とは何か](/ja/docs/Learn/Common_questions/Web_mechanics/What_is_a_URL)
- [IANA list of URI schemes](https://www.iana.org/assignments/uri-schemes/uri-schemes.xhtml) (`resource:` is [covered here](https://www.iana.org/assignments/uri-schemes/prov/resource))