diff options
author | Peter Bengtsson <mail@peterbe.com> | 2020-12-08 14:40:17 -0500 |
---|---|---|
committer | Peter Bengtsson <mail@peterbe.com> | 2020-12-08 14:40:17 -0500 |
commit | 33058f2b292b3a581333bdfb21b8f671898c5060 (patch) | |
tree | 51c3e392513ec574331b2d3f85c394445ea803c6 /files/ja/web/http/basics_of_http | |
parent | 8b66d724f7caf0157093fb09cfec8fbd0c6ad50a (diff) | |
download | translated-content-33058f2b292b3a581333bdfb21b8f671898c5060.tar.gz translated-content-33058f2b292b3a581333bdfb21b8f671898c5060.tar.bz2 translated-content-33058f2b292b3a581333bdfb21b8f671898c5060.zip |
initial commit
Diffstat (limited to 'files/ja/web/http/basics_of_http')
8 files changed, 1466 insertions, 0 deletions
diff --git a/files/ja/web/http/basics_of_http/choosing_between_www_and_non-www_urls/index.html b/files/ja/web/http/basics_of_http/choosing_between_www_and_non-www_urls/index.html new file mode 100644 index 0000000000..02bd3975a5 --- /dev/null +++ b/files/ja/web/http/basics_of_http/choosing_between_www_and_non-www_urls/index.html @@ -0,0 +1,69 @@ +--- +title: www 付きと www なしの URL の選択 +slug: Web/HTTP/Basics_of_HTTP/Choosing_between_www_and_non-www_URLs +tags: + - Guide + - HTTP + - URL +translation_of: Web/HTTP/Basics_of_HTTP/Choosing_between_www_and_non-www_URLs +--- +<div>{{HTTPSidebar}}</div> + +<p class="summary">ウェブサイトの管理者の間で繰り返される質問が、www URL と非 www URL のどちらを選択するかです。このページでは、何が最良かについてアドバイスを提供します。</p> + +<h2 id="What_are_domain_names" name="What_are_domain_names">ドメイン名とは何か</h2> + +<p>HTTP の URL では、先頭の <code>http://</code> または <code>https://</code> に続く部分文字列をドメインと呼びます。ドメイン名は、文書が存在するサーバーにホスティングされています。</p> + +<p>サーバーは物理的な装置である必要はありません。同じ物理的な装置上に複数のサーバーを配置できます。あるいは複数の装置がひとつのサーバーとして扱われることもあり、協力して回答を生成したり、サーバー間でリクエストの負荷を分散したりします。重要なことは、意味的に<em>ひとつのドメイン名がひとつのサーバーを表す</em>ことです。</p> + +<h2 id="So_do_I_have_to_choose_one_or_the_other_for_my_web_site" name="So_do_I_have_to_choose_one_or_the_other_for_my_web_site">では、自身のウェブサイトでどちらかを選択しなければならないのか</h2> + +<ul> + <li><u>はい</u>、ひとつを選択して維持しなければなりません。基準となる場所に応じてどちらを選択するかはあなた次第ですが、どちらかを選択したら、それを維持してください。それにより、ユーザーや検索エンジンから見てウェブサイトが首尾一貫したものになります。これは、常に選択したドメインにリンクする (ウェブサイト内で相対 URL を使用すれば、難しくはないでしょう)、および常に同じドメインへのリンクを (電子メールやソーシャルネットワークなどで) 共有することを含みます。</li> + <li><u>いいえ</u>、二つ持つことができます。どちらが公式なドメインであるかについて、一貫性を持って矛盾しないことが重要です。<strong>この公式なドメインは<em>正規名</em>と呼ばれます。</strong>すべての絶対パスリンクで正規名を使用するべきです。しかし、それでも他のドメインを機能させることができます。HTTP ではどちらのドメインが正規のものであるかをユーザーや検索エンジンに対して明らかにするとともに、非正規のドメインが機能して想定したページを提供できるようにするための技術が 2 つあります。</li> +</ul> + +<p>従って、正規なドメインとしてひとつ選択してください! 以下の 2 つの技術によって、非正規のドメインも機能させることができます。</p> + +<h2 id="Techniques_for_canonical_URLs" name="Techniques_for_canonical_URLs">非正規の URL のための技術</h2> + +<p>どのウェブサイトが<em>正規</em>であるかを選択するための、さまざまな方法があります。</p> + +<h3 id="Using_HTTP_301_redirects" name="Using_HTTP_301_redirects">HTTP 301 リダイレクトを使用する</h3> + +<p>この場合は非正規ドメインへのリクエストに対して適切な HTTP {{HTTPStatus(301)}} レスポンスを返すために、HTTP リクエストを受けるサーバー (おそらく、www URL 向けと非 www URL 向けは同じでしょう) の設定が必要です。これは、非正規 URL へアクセスしようとしたブラウザーを正規な同等 URL へリダイレクトします。例えば非 www URL を正規なものとして使用することを選択した場合は、すべての www URL を、www をつけない同等の URL にリダイレクトします。</p> + +<p>例:</p> + +<ol> + <li>サーバーが <code>http://www.example.org/whaddup</code> へのリクエストを受けます (正規のドメインが example.org であるとき)。</li> + <li>サーバーは <code>{{HTTPHeader("Location")}}: http://example.org/whaddup</code> ヘッダーを伴う {{HTTPStatus(301)}} コードのレスポンスを返します。</li> + <li>クライアントは正規ドメイン <code>http://example.org/whatddup</code> へのリクエストを発行します。</li> +</ol> + +<p><a href="https://github.com/h5bp/html5-boilerplate">HTML5 boilerplate project</a> に、<a href="https://github.com/h5bp/html5-boilerplate/blob/7a22a33d4041c479d0962499e853501073811887/.htaccess#L219-L258">あるドメインから別のドメインへリダイレクトするように Apache を設定する方法</a> の例があります。</p> + +<h3 id="Using_<link_relcanonical>" name="Using_<link_relcanonical>"><em><code><link rel="canonical"></code></em> を使用する</h3> + +<p>ページの正規のアドレスは何かを示す、専用の HTML {{HTMLElement("link")}} 要素をページに追加できます。これは人間向けのページリーダーには影響がありませんが、検索エンジンのクローラーに対してページが実際はどこにあるかを示します。この方法では検索エンジンが同じページで何度もインデックスを作成したり、重複したコンテンツやスパムであると判断されたり、検索エンジンの結果ページでページが排除されたりランクが下がったりすることがなくなります。</p> + +<p>このようなタグを追加するときは両方のドメインで同じコンテンツを提供して、どの URL が正規であるかを検索エンジンに示します。先ほどの例では <code>http://www.example.org/whaddup</code> が <code>http://example.org/whaddup</code> と同じコンテンツを提供していますが、head に {{htmlelement("link")}} 要素を追加します:</p> + +<p><code><link href="http://example.org/whaddup" rel="canonical"></code></p> + +<p>リダイレクトの場合と異なり、ブラウザーの履歴では非 www URL と www URL が独立した項目であるとみなします。</p> + +<h2 id="Make_your_page_work_for_both" name="Make_your_page_work_for_both">どちらでもページを動作させる</h2> + +<p>これらの技術と併せて、 www つきドメインと www なしドメインの両方で正しく応答するようにサーバーを設定しましょう。ユーザーがブラウザーの URL バーにどちらの URL を入力するかは予測できませんので、これを行うことはよい助言になります。これは正式な場所としてどちらを使用したいかを選択するという問題であり、その結果に応じて他の URL をリダイレクトします。</p> + +<h2 id="Deciding_the_case" name="Deciding_the_case">状況を判断する</h2> + +<p class="entry-title">これは<a href="http://bikeshed.com/">自転車置き場</a>問題と考えられる、とても主観的な話題です。もっと深く読んでみたいと思ったら、この件に関する<a href="https://www.netlify.com/blog/2017/02/28/to-www-or-not-www/">多くの</a><a href="https://www.wpbeginner.com/beginners-guide/www-vs-non-www-which-is-better-for-wordpress-seo/">記事</a>をご覧ください。</p> + +<h2 id="See_also" name="See_also">関連情報</h2> + +<ul> + <li><a href="https://www.chrisfinke.com/2011/07/25/what-do-people-type-in-the-address-bar/">Stats on what people type in the URL bar</a> (2011)</li> +</ul> diff --git a/files/ja/web/http/basics_of_http/data_uris/index.html b/files/ja/web/http/basics_of_http/data_uris/index.html new file mode 100644 index 0000000000..62afc21371 --- /dev/null +++ b/files/ja/web/http/basics_of_http/data_uris/index.html @@ -0,0 +1,138 @@ +--- +title: データ URL +slug: Web/HTTP/Basics_of_HTTP/Data_URIs +tags: + - Base64 + - Guide + - HTTP + - Intermediate + - URL +translation_of: Web/HTTP/Basics_of_HTTP/Data_URIs +--- +<div>{{HTTPSidebar}}</div> + +<p><strong>データ URL</strong> は <code>data:</code> スキームが先頭についた URL で、小さなファイルをインラインで文書に埋め込むことができます。以前、 WHATWG で取り下げられるまでは "data URIs" と呼ばれていました。</p> + +<div class="note"> +<p><strong>注</strong>: 最近のブラウザーでは、データ URL はナビゲーションを担当する設定オブジェクトの起源を継承するのではなく、一意の不透明な起点として扱われます。</p> +</div> + +<h2 id="Syntax" name="Syntax">構文</h2> + +<p>データ URL は接頭辞 (<code>data:</code>)、データの種類を示す <a href="/ja/docs/Web/HTTP/Basics_of_HTTP/MIME_types">MIME タイプ</a>、テキストではないデータである場合のオプションである <code>base64</code> トークン、データ自体の 4 つの部品で構成されます。</p> + +<pre class="syntaxbox notranslate">data:[<mediatype>][;base64],<data> +</pre> + +<p><code>mediatype</code> は <a href="/ja/docs/Web/HTTP/Basics_of_HTTP/MIME_types">MIME タイプ</a>で, 例えば <code>'image/jpeg'</code> で JPEG 画像を表します。省略時の既定値は <code>text/plain;charset=US-ASCII</code> です。</p> + +<p>データが文字ならば、そのまま埋め込めます (埋め込む文書タイプに応じて、適切な実体参照やエスケープを行なってください)。それ以外では <code>base64</code> を指定し、 base64 エンコードしたバイナリデータを埋め込みます。 MIME タイプについての詳しい情報は<a href="/ja/docs/Web/HTTP/Basics_of_HTTP/MIME_types">こちら</a>や<a href="/ja/docs/Web/HTTP/Basics_of_HTTP/MIME_types/Complete_list_of_MIME_types">こちら</a>にあります。</p> + +<p>例:</p> + +<dl> + <dt><code>data:,Hello%2C%20World!</code></dt> + <dd>平易な text/plain データです。引用符や空白には<a href="/ja/docs/Glossary/percent-encoding">パーセントエンコーディング</a> (URL エンコーディング) を使用します。また、 CSV データ (MIME タイプは "text/csv") もスプレッドシートの行を区切るための改行文字を保存するためにパーセントエンコーディングが必要です。</dd> + <dt><code>data:text/plain;base64,SGVsbG8sIFdvcmxkIQ==</code></dt> + <dd>同じ内容の base64 エンコード版</dd> + <dt><code>data:text/html,%3Ch1%3EHello%2C%20World!%3C%2Fh1%3E</code></dt> + <dd><code><h1>Hello, World!</h1></code> という HTML 文書</dd> + <dt><code>data:text/html,<script>alert('hi');</script></code></dt> + <dd>JavaScript のアラートを実行する HTML 文書。終了タグが必要ですので注意してください。</dd> +</dl> + +<h2 id="Encoding_data_into_base64_format" name="Encoding_data_into_base64_format">データの base64 形式へのエンコード</h2> + +<p>Base64 はバイナリからテキストへのエンコード方法の集まりで、バイナリデータを64進数表現に変換することで ASCII 文字列形式にするものです。 ASCII 文字のみから成るため、 Base64 の文字列は一般に URL でも安全ですので、データ URL のデータのエンコードに利用することができます。</p> + +<h3 id="Encoding_in_Javascript" name="Encoding_in_Javascript">Javascript でのエンコード</h3> + +<p>Web API には、 Base64 をエンコードまたはデコードするためのネイティブメソッド、 <a href="/ja/docs/Web/API/WindowBase64/Base64_encoding_and_decoding">Base64 encoding and decoding</a> があります。</p> + +<h3 id="Encoding_on_a_Unix_system" name="Encoding_on_a_Unix_system">Unix システムでのエンコード</h3> + +<p>Linux や Mac OS X システムでのファイルまたは文字列の Base64 エンコードは、コマンドラインの <code>base64</code> (または、他にも <code>uuencode</code> ユーティリティの <code>-m</code> オプションつき) を使用して実現できます。</p> + +<pre class="brush: bash notranslate">echo -n hello|base64 +# コンソールへの出力: aGVsbG8= + +echo -n hello>a.txt +base64 a.txt +# コンソールへの出力: aGVsbG8= + +base64 a.txt>b.txt +# b.txt ファイルへの出力: aGVsbG8= +</pre> + +<h3 id="Encoding_on_Microsoft_Windows" name="Encoding_on_Microsoft_Windows">Microsoft Windows でのエンコード</h3> + +<p>Windows では、 <a href="https://docs.microsoft.com/ja-jp/dotnet/api/system.convert.tobase64string?view=net-5.0">Convert.ToBase64String</a> を PowerShell で使用することで Base64 エンコードを行うことができます。</p> + +<pre class="syntaxbox notranslate">[convert]::ToBase64String([Text.Encoding]::UTF8.GetBytes("hello")) +# outputs to console: aGVsbG8= +</pre> + +<p>他にも、 GNU/Linux シェル (<a href="https://ja.wikipedia.org/wiki/Windows_Subsystem_for_Linux">WSL</a> など) が <code>base64</code> ユーティリティを提供しています。</p> + +<pre class="syntaxbox notranslate">bash$ echo -n hello | base64 +# outputs to console: aGVsbG8= +</pre> + +<h2 id="Common_problems" name="Common_problems">よくある問題</h2> + +<p>この章では <code>data</code> の URL を作ったり使ったりするときに、よく起こる問題について述べます。</p> + +<pre class="notranslate">data:text/html,lots of text...<p><a name%3D"bottom">bottom</a>?arg=val +</pre> + +<p>これは次の内容の HTML リソースを表します。</p> + +<pre class="notranslate">lots of text...<p><a name="bottom">bottom</a>?arg=val +</pre> + +<dl> + <dt>構文</dt> + <dd><code>data</code> URL の書式は非常に単純ですが、"データ" 部分の前にカンマを置くのを忘れがちです。忘れるとデータが正しく base64 形式にエンコードされません。</dd> + <dt>HTML におけるフォーマット</dt> + <dd><code>data</code> はファイル内でファイルを提供しますが、外側の文書に比べて幅がとても広くなる可能性があります。 URL としては、 <code>data</code> はホワイトスペース (改行、タブ、空白) で体裁を整えることができるはずですが、 <a class="external" href="http://bugzilla.mozilla.org/show_bug.cgi?id=73026#c12">base64 エンコードをすると起こる問題</a> があります。</dd> + <dt>長さの制限</dt> + <dd>Firefox は基本的に長さ制限のない <code>data</code> URL に対応していますが、ブラウザーは特定の最大長のデータに対応する必要はありません。たとえば、 Opera 11 ブラウザーでは URL が65535文字に制限されており、 <code>data</code> URL は65529文字に制限されています (65529文字は、 MIME タイプを指定せずにプレーンの <code>data:</code> を使用した場合、ソースではなくエンコードされたデータの長さです)。</dd> + <dt>エラー処理の欠如</dt> + <dd>メディア内の不正な引数や、 <code>'base64'</code> の定義内の打ち間違いは無視され、何もエラーは出ません。</dd> + <dt>クエリ文字列のサポートの欠如、など</dt> + <dd> + <p>データ URL のデータ部分は不透明 (opaque) なので、データ URL と一緒にクエリ文字列 (<code><url>?parameter-data</code> という構文で表されるページ固有のパラメータ) を使うと、データ URL が表現するデータに単にクエリ文字列が含まれたものになります。</p> + </dd> + <dt>セキュリティの課題</dt> + <dd>多数のセキュリティ問題 (フィッシングなど) がデータ URL に関連付けられており、ブラウザーの最上位でそれらに移動しています。このような問題を軽減するために、Firefox 59+ (リリース版、Nightly/Beta は58以降) では <code>data://</code> URL へのトップレベルのナビゲーションがブロックされており、他のブラウザがすぐに対応することを期待しています。詳細については、<a href="https://blog.mozilla.org/security/2017/11/27/blocking-top-level-navigations-data-urls-firefox-58/">Firefox 58 におけるデータ URL へのトップレベルナビゲーションのブロック</a>を参照してください。</dd> +</dl> + +<h2 id="Specifications" name="Specifications">仕様書</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">仕様書</th> + <th scope="col">題名</th> + </tr> + <tr> + <td>{{RFC("2397")}}</td> + <td>The "data" URL scheme</td> + </tr> + </tbody> +</table> + +<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2> + +<p>{{compat("http.data-url")}}</p> + +<h2 id="See_also" name="See_also">関連情報</h2> + +<ul> + <li><a href="/ja/docs/Web/API/WindowBase64/Base64_encoding_and_decoding">Base64 のエンコードとデコード</a></li> + <li><a href="/ja/docs/Glossary/percent-encoding">パーセントエンコーディング</a></li> + <li>{{domxref("WindowBase64.atob","atob()")}}</li> + <li>{{domxref("WindowBase64.btoa","btoa()")}}</li> + <li><a href="/ja/docs/Web/CSS/uri">CSS <code>url()</code></a></li> + <li><a href="/ja/docs/Glossary/URI">URI</a></li> +</ul> diff --git a/files/ja/web/http/basics_of_http/evolution_of_http/index.html b/files/ja/web/http/basics_of_http/evolution_of_http/index.html new file mode 100644 index 0000000000..4357788871 --- /dev/null +++ b/files/ja/web/http/basics_of_http/evolution_of_http/index.html @@ -0,0 +1,210 @@ +--- +title: HTTP の進化 +slug: Web/HTTP/Basics_of_HTTP/Evolution_of_HTTP +tags: + - Guide + - HTTP + - NeedsUpdate + - NeedsUpdate(HTTP/3) +translation_of: Web/HTTP/Basics_of_HTTP/Evolution_of_HTTP +--- +<div>{{HTTPSidebar}}</div> + +<p class="summary"><span class="seoSummary"><strong>HTTP</strong> は World Wide Web を支えるプロトコルです。</span> Tim Berners-Lee によって 1989-1991 年に開発されれてから、HTTP にはシンプルさのほとんどを維持しながら柔軟性をさらに形作る、多くの変更がみられます。 <span class="seoSummary">HTTP は初期のいくぶん信頼された研究所の環境内でファイルを交換するプロトコルから、現代のインターネットの迷宮で高解像度や 3D の画像や動画を運ぶプロトコルに進化しました。</span></p> + +<h2 id="Invention_of_the_World_Wide_Web" name="Invention_of_the_World_Wide_Web">World Wide Web の発明</h2> + +<p>1989 年、 CERN で働いていた Tim Berners-Lee は、インターネット上のハイパーテキストシステムを構築するための提案書を執筆しました。当初 <em>Mesh</em> と呼ばれていたそのシステムは、1990 年に実装されている間に <em>World Wide Web</em> へ改名されました。 World Wide Web は既存の TCP および IP プロトコル上に構築され、4 つの要素から構成されました:</p> + +<ul> + <li>ハイパーテキスト文書を表現するテキスト形式である <em><a href="/ja/docs/Web/HTML">HyperText Markup Language</a></em> (HTML)。</li> + <li>それらの文書を交換するシンプルなプロトコルである <em>HypertText Transfer Protocol </em>(HTTP)。</li> + <li>それらの文書を表示 (および付随的に編集) するクライアントである、<em>WorldWideWeb</em> と呼ばれた最初のウェブブラウザー。</li> + <li>文書へのアクセス機能を提供するサーバーである、<em>httpd</em> の初期バージョン。</li> +</ul> + +<p>これら 4 つの構成要素は 1990 年の末に完成して、最初のサーバーが早くも 1991 年の初期に CERN の外部で稼働しました。1991 年 8 月 6 日の、 Tim Berners-Lee による <em>alt.hypertext</em> 公開ニュースグループへの <a href="https://www.w3.org/People/Berners-Lee/1991/08/art-6484.txt">投稿</a> が、公開プロジェクトとしての World Wide Web の公式な開始日と考えられています。</p> + +<p>初期段階で使用された HTTP プロトコルはとてもシンプルであり、後に HTTP/0.9 と名付けられ、また時にはワンラインプロトコルとも呼ばれました。</p> + +<h2 id="HTTP0.9_–_The_one-line_protocol" name="HTTP0.9_–_The_one-line_protocol">HTTP/0.9 – ワンラインプロトコル</h2> + +<p>初期バージョンの HTTP にはバージョン番号がありませんでした。以降のバージョンと区別するため、後に 0.9 と呼ばれるようになりました。HTTP/0.9 はとても単純です。リクエストは唯一使用可能なメソッドである {{HTTPMethod("GET")}} で始まって、リソースへのパス (サーバーに接続すればプロトコル、サーバー名、ポートが必要ではなくなるため、 URL ではありません) が後に続く 1 行で構成されます。</p> + +<pre class="notranslate">GET /mypage.html</pre> + +<p>レスポンスも、とても単純です。こちらはファイル自身だけで構成されます。</p> + +<pre class="notranslate"><HTML> +A very simple HTML page +</HTML></pre> + +<p>以降の進化形とは異なり、HTTP ヘッダーがなく HTML ファイルだけが転送可能であり、他の種類の文書は転送できません。また、ステータスやエラーのコードはありません。問題が発生すると、人間が使用するために問題の説明を収めた専用の HTML ファイルを返送します。</p> + +<h2 id="HTTP1.0_–_Building_extensibility" name="HTTP1.0_–_Building_extensibility">HTTP/1.0 – 拡張性を築く</h2> + +<p>HTTP/0.9 は制約がとても多いため、多目的に使用できるようにブラウザーやサーバーがいち早く拡張しました。</p> + +<ul> + <li>各リクエストでバージョン情報を送信するようになりました (<code>HTTP/1.0</code> が <code>GET</code> の行に追加されました)。</li> + <li>レスポンスの始めにステータスコードの行を送信し、ブラウザー自体がリクエストの成功または失敗を理解して、その結果に応じて動作を順応できる (特定の方法でローカルのキャッシュを更新または使用するなど) ようになりました</li> + <li>リクエストとレスポンスの両方で HTTP ヘッダーの概念を導入して、メタデータの送信を可能にするとともにプロトコルを極めて柔軟かつ拡張可能にしました。</li> + <li>新たな HTTP ヘッダーの助けを借りて、プレーン HTML ファイル以外の文書を転送する機能を追加する ({{HTTPHeader("Content-Type")}} ヘッダーのおかげ)。</li> +</ul> + +<p>この時点で、一般的なリクエストとレスポンスはこのようになりました。</p> + +<pre class="notranslate">GET /mypage.html HTTP/1.0 +User-Agent: NCSA_Mosaic/2.0 (Windows 3.1) + +200 OK +Date: Tue, 15 Nov 1994 08:12:31 GMT +Server: CERN/3.0 libwww/2.17 +Content-Type: text/html +<HTML> +A page with an image + <IMG SRC="/myimage.gif"> +</HTML></pre> + +<p>次のコネクションが続いて、画像の読み込みをリクエストします (前のリクエストのレスポンスに続きます)。</p> + +<pre class="notranslate">GET /myimage.gif HTTP/1.0 +User-Agent: NCSA_Mosaic/2.0 (Windows 3.1) + +200 OK +Date: Tue, 15 Nov 1994 08:12:32 GMT +Server: CERN/3.0 libwww/2.17 +Content-Type: text/gif +<em>(画像コンテンツ)</em></pre> + +<p>これらの新機能は協調作業によらず、1991 年から 1995 年の間に試行錯誤によって導入されました。サーバーとブラウザーにある機能を追加して、効果があるかを確認していました。多くの相互運用性の問題が日常茶飯事でした。1996 年 11 月にこれらの問題を解消するため、共通の慣行を説明する情報文書である {{RFC(1945)}} が発行されました。これは HTTP/1.0 の定義であり、狭義の意味で公式の標準ではないことは注目に値します。</p> + +<h2 id="HTTP1.1_–_The_standardized_protocol" name="HTTP1.1_–_The_standardized_protocol">HTTP/1.1 – 標準化されたプロトコル</h2> + +<p>さまざまな HTTP/1.0 の使用によるやや混沌した状況と並行して、HTTP/1.0 の文書の公開を翌年に控えた 1995 年から、正式な標準化が進められました。HTTP で最初に標準化されたバージョンである HTTP/1.1 が、HTTP/1.0 から数か月後である 1997 年初頭に公開されました。</p> + +<p>HTTP/1.1 ではあいまいな部分を明確にするとともに、いくつもの改良を施しました:</p> + +<ul> + <li>コネクションの再利用が可能になりました。最初に取り込んだひとつの文書内に埋め込まれているリソースを表示するために、コネクションを何度も開く時間を節約します。</li> + <li>パイプライン機能を追加しました。最初のリクエストへの回答が完全に転送される前に次のリクエストを送信でき、通信のレイテンシーを削減します。</li> + <li>Chunked 形式のレスポンスをサポートしました。</li> + <li>新たなキャッシュ制御の仕組みを追加しました。</li> + <li>言語、エンコーディング、タイプのコンテンツネゴシエーションを導入しました。クライアントとサーバーが、もっとも適切なコンテンツを交換するよう同意することができます。</li> + <li>同じ IP アドレスで異なるドメインを提供できる {{HTTPHeader("Host")}} ヘッダーのおかげで、サーバーのコロケーションが可能になりました。</li> +</ul> + +<p>ひとつのコネクションで行われる典型的なリクエストのフローは、以下のようになりました。</p> + +<pre class="notranslate">GET /en-US/docs/Glossary/Simple_header HTTP/1.1 +Host: developer.mozilla.org +User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:50.0) Gecko/20100101 Firefox/50.0 +Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 +Accept-Language: en-US,en;q=0.5 +Accept-Encoding: gzip, deflate, br +Referer: https://developer.mozilla.org/en-US/docs/Glossary/Simple_header + +200 OK +Connection: Keep-Alive +Content-Encoding: gzip +Content-Type: text/html; charset=utf-8 +Date: Wed, 20 Jul 2016 10:55:30 GMT +Etag: "547fa7e369ef56031dd3bff2ace9fc0832eb251a" +Keep-Alive: timeout=5, max=1000 +Last-Modified: Tue, 19 Jul 2016 00:59:33 GMT +Server: Apache +Transfer-Encoding: chunked +Vary: Cookie, Accept-Encoding + +<em>(コンテンツ)</em> + + +GET /static/img/header-background.png HTTP/1.1 +Host: developer.cdn.mozilla.net +User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:50.0) Gecko/20100101 Firefox/50.0 +Accept: */* +Accept-Language: en-US,en;q=0.5 +Accept-Encoding: gzip, deflate, br +Referer: https://developer.mozilla.org/en-US/docs/Glossary/Simple_header + +200 OK +Age: 9578461 +Cache-Control: public, max-age=315360000 +Connection: keep-alive +Content-Length: 3077 +Content-Type: image/png +Date: Thu, 31 Mar 2016 13:34:46 GMT +Last-Modified: Wed, 21 Oct 2015 18:27:50 GMT +Server: Apache + +<em>(3077 バイトの画像コンテンツ)</em></pre> + +<p>HTTP/1.1 は、1997 年 1 月に {{rfc(2068)}} として初版が発行されました。</p> + +<h2 id="More_than_15_years_of_extensions" name="More_than_15_years_of_extensions">15 年以上にわたる拡張</h2> + +<p>HTTP の拡張性 (新たなヘッダーやメソッドを容易に追加できる) のおかげで、HTTP/2 が公開される前に 1999 年 1 月に発行された {{RFC("2616")}} や 2014 年 6 月に発行された {{RFC("7230")}}-{{RFC("7235")}} によって HTTP/1.1 プロトコルが 2 度改版されても、このプロトコルは 15 年以上にわたって極めて安定していました。</p> + +<h3 id="Using_HTTP_for_secure_transmissions" name="Using_HTTP_for_secure_transmissions">安全な転送のために HTTP を使用する</h3> + +<p>HTTP でもっとも大きな変化が、早くも 1994 年の末に発生しました。基本的な TCP/IP スタック上で HTTP を送信するかわりに、TCP/IP の上層に追加する暗号化された転送レイヤーである SSL を Netscape Communications が開発しました。SSL 1.0 は社外に公開されませんでしたが、SSL 2.0 とその後継である SSL 3.0 は、サーバーとクライアントの間で交換されるメッセージの暗号化および信頼性の保証によって、電子商取引のウェブサイトの作成を可能にしました。 SSL は標準化の過程に乗せられて最終的に TLS になり、バージョン 1.0、1.1、1.2、1.3 が脆弱性を抑えることに成功しました。</p> + +<p>それと同時に、暗号化されたトランスポート層の必要性が発生しました。ウェブが主に学術用ネットワークにある比較的信頼された状況を失って、広告者やさまざまな個人や犯罪者が人々の個人情報を多く得ようと競い合い、なりすましや改変されたデータによる置き換えを図るようになりました。HTTP 上に構築されたアプリケーションがさらに強力になるのに従ってアドレス帳、電子メール、ユーザーの位置情報といったさらに個人的な情報へアクセスするようになり、TLS の必要性は電子商取引を越えていたるところに存在します。</p> + +<h3 id="Using_HTTP_for_complex_applications" name="Using_HTTP_for_complex_applications">複雑なアプリケーションのために HTTP を使用する</h3> + +<p>Tim Berners-Lee による当初のウェブのビジョンは、読み取り専用の手段ではありませんでした。彼はウェブについて、人々が遠隔操作で文書を追加や移動することができる開かれたファイルシステムを描いていました。1996 年頃に HTTP はオーサリングができるように拡張され、WebDAV という名前の標準仕様が作られました。これはアドレス帳の項目を扱う CardDAV やカレンダーを扱う CalDAV など、特定のアプリケーション向けにさらに拡張されました。しかしこれらの *DAV 拡張には、それが使用するサーバーに実装されている必要があり、またとても複雑であったという欠点があります。ウェブの領域でこれらは、内輪で使用されているままです。</p> + +<p>2000 年に、HTTP を使用する新たなパターンである {{glossary("REST", "representational state transfer")}} (REST) が考案されました。API が発したアクションは新たな HTTP メソッドによって伝達されず、基本的な HTTP/1.1 メソッドによって特定の URI にアクセスする場合に限られます。これによりウェブアプリケーションは、ブラウザーやサーバーを更新することなくデータの取り出しや変更ができる API の提供が可能になります。必要なものはすべて、標準の HTTP/1.1 によってウェブサイトから提供されるファイルに埋め込まれています。それぞれのウェブサイトが独自の非標準な RESTful API を定義して、それらがウェブサイトを制御するという事実に REST モデルの欠点があります。*DAV 拡張との違いは、クライアントとサーバーが相互使用可能ではないことです。RESTful API は、2010 年代にはとても一般的になりました。</p> + +<p>2005 年よりウェブページを格段に向上させる API セットが利用可能になりました。またこれらのいくつかは特定用途向けに、主に新たな固有の HTTP ヘッダーを作成して HTTP プロトコルを拡張しました:</p> + +<ul> + <li><a href="/ja/docs/Web/API/Server-sent_events">Server-sent events</a>。サーバーがクライアントに対して、特別なメッセージを送信できます。</li> + <li><a href="/ja/docs/Web/API/WebSocket_API">WebSocket</a>。既存の HTTP コネクションを更新することでセットアップできる、新たなプロトコルです。</li> +</ul> + +<h3 id="Relaxing_the_security-model_of_the_Web" name="Relaxing_the_security-model_of_the_Web">ウェブのセキュリティモデルを緩和する</h3> + +<p>HTTP はウェブのセキュリティモデルである <a href="/ja/docs/Web/Security/Same-origin_policy">同一オリジンポリシー</a> とは独立した存在です。実は、現在のウェブのセキュリティモデルは HTTP を作成した後に開発されたのです!長年かけて、一定の条件の下でこのポリシーの制限の一部を解除できるようにすることにより、より寛大にできることが有効であると立証されました。いつどのようにしてこれらの制限を解除するかは、新たな HTTP ヘッダー群を使用してサーバーからクライアントに送信されます。これは <a href="/ja/docs/Glossary/CORS">Cross-Origin Resource Sharing</a> (CORS) や <a href="/ja/docs/Web/Security/CSP">Content Security Policy</a> (CSP) といった仕様で定義されています。</p> + +<p>これらの大きな拡張に加えて、ほかにも実験用に限るものを含めて多くのヘッダーが追加されました。主なヘッダーとしてプライバシーを制御するための Do Not Track ({{HTTPHeader("DNT")}}) ヘッダー、{{HTTPHeader("X-Frame-Options")}}、{{HTTPHeader('Upgrade-Insecure-Request')}} がありますが、さらに多くのヘッダーが存在します。</p> + +<h2 id="HTTP2_–_A_protocol_for_greater_performance" name="HTTP2_–_A_protocol_for_greater_performance">HTTP/2 – 高パフォーマンスなプロトコル</h2> + +<p>長年かけてウェブページはより複雑になり、アプリケーション自体も同様に複雑化しました。表示する視覚メディアの量や、対話機能を追加するスクリプトの規模やサイズも増加しました。著しく多くの HTTP リクエストによって、より多くのデータが転送されます。HTTP/1.1 のコネクションは、正しい順序でリクエストを送信しなければなりません。理論上は並行していくつかのコネクションを使用できます (通常 5 から 8 の間) が、かなりのオーバーヘッドや複雑性をもたらします。たとえば HTTP パイプラインは、ウェブ開発でリソースの負荷になることが明らかになりました。</p> + +<p>2010 年代の前半に Google は実験的なプロトコルである SPDY を実装して、クライアントとサーバーの間でデータを交換するための代替手段を示しました。これは、ブラウザーやサーバーの両方の開発者から多くの関心を集めました。応答性の向上を明確にするとともに、転送するデータの重複による問題を解決することで、SPDY は HTTP/2 プロトコルの基礎を務めました。</p> + +<p>HTTP/2 プロトコルには、HTTP/1.1 との大きな違いがいくつかあります:</p> + +<ul> + <li>テキスト形式ではなく、バイナリ形式のプロトコルです。このハードルにより内容を読んだり手作業で作成したりすることができなくなりましたが、改良された最適化技術を実装できるようになりました。</li> + <li>多重化されたプロトコルです。同じコネクションでリクエストを並行して扱うことができ、HTTP/1.x プロトコルの順序やブロッキングの制約を排除しています。</li> + <li>ヘッダーを圧縮します。一式のリクエスト内で似たものが存在することが多いため、これはデータ転送の重複やオーバーヘッドを削減します。</li> + <li>サーバープッシュと呼ばれる仕組みによって、リクエストより先にサーバーがクライアントのキャッシュにデータを加えることができます。</li> +</ul> + +<p>HTTP/2 は 2015 年 5 月に正式に標準化され、多くの成功例がありました。2016 年 7 月には、すべてのウェブサイトの 8.7% <sup><a href="https://w3techs.com/technologies/details/ce-http2/all/all">[1]</a></sup> ですでに使用されており、すべてのリクエストの 68% 以上を占めています<sup><a href="https://www.keycdn.com/blog/http2-statistics/">[2]</a></sup>。トラフィックが多いウェブサイトでもっとも早く採用されており、データ転送のオーバーヘッドやそれによる経費をかなり削減しています。</p> + +<p>HTTP/2 はウェブサイトやアプリケーションの改造が不要 (これらにとって HTTP/1.1 を使用するか HTTP/2 を使用するかは透過的です) ですので、このすばやい採用のペースはもっともです。最近のブラウザーと通信する最新のサーバーがあれば、HTTP/2 を有効化するのに十分です。限られたグループだけが採用のきっかけとして必要であり、古いブラウザーやサーバーが更新されるのに従って、ウェブ開発者の努力なしに使用個所が自然に増えていきます。</p> + +<h2 id="Post-HTTP2_evolution" name="Post-HTTP2_evolution">HTTP/2 以降の進化</h2> + +<p>HTTP/2 の公開によって HTTP の進化が止まったわけではありません。過去の HTTP/1.x と同様に、新しい機能を追加するために HTTP の拡張性が今でも活用されています。特に、2016 年に現れた新たな HTTP の拡張を挙げることができます:</p> + +<ul> + <li>{{HTTPHeader("Alt-Svc")}} に対応することで、指定されたリソースの場所と同一性を分離することができ、よりスマートな {{Glossary("CDN")}} のキャッシュ機構を可能にします。</li> + <li>{{HTTPHeader("Client-Hints")}} の導入によりブラウザーやクライアントがサーバーに対して、クライアントの要件やハードウェアの制約に関する情報を率先して伝えることができます。</li> + <li>{{HTTPHeader("Cookie")}} ヘッダーに導入されたセキュリティ関連の接頭辞は、安全な Cookie が改変されていないことを保証する助けになります。</li> +</ul> + +<p>これらの HTTP の進化はプロトコルの拡張性やシンプルさを実証しており、多くのアプリケーションの作成やプロトコルの採用を促しています。今日の HTTP が使用される環境は、1990 年代初頭にみられた環境とは大きく異なっています。 HTTP の本来の設計は傑作であることを実証しており、四半世紀にわたって抵抗されることなくウェブを進化させることができました。 HTTP を成功させた柔軟性や拡張性を維持ししながら欠点を直した HTTP/2 の採用は、プロトコルの明るい未来を暗示しています。</p> + +<h2 id="HTTP3_-_HTTP_over_QUIC">HTTP/3 - HTTP over QUIC</h2> + +<p>{{Draft}}{{SeeCompatTable}}</p> + +<p>次のメジャーバージョンの HTTP である HTTP/3 は、トランスポート層に TCP/TLS の代わりに QUIC を使用する予定です。</p> + +<p>Firefox での実装状況については {{bug(1158011)}} を参照してください。</p> diff --git a/files/ja/web/http/basics_of_http/identifying_resources_on_the_web/index.html b/files/ja/web/http/basics_of_http/identifying_resources_on_the_web/index.html new file mode 100644 index 0000000000..aa8dd47efd --- /dev/null +++ b/files/ja/web/http/basics_of_http/identifying_resources_on_the_web/index.html @@ -0,0 +1,192 @@ +--- +title: ウェブ上のリソースの識別 +slug: Web/HTTP/Basics_of_HTTP/Identifying_resources_on_the_Web +tags: + - Domain + - HTTP + - Path + - Scheme + - Syntax + - URI + - URL + - URL Syntax + - Web + - fragment + - port + - query + - resources +translation_of: Web/HTTP/Basics_of_HTTP/Identifying_resources_on_the_Web +--- +<div>{{HTTPSidebar}}</div> + +<p class="summary">HTTP 要求の対象は「リソース」と呼ばれ、その本質は細かく定義されていません。ドキュメント、写真、その他の何にでもなりえます。それぞれのリソースは、リソースを特定するために HTTP の至るところで使用される Uniform Resource Identifier ({{Glossary("URI")}}) で特定されます。</p> + +<p>ウェブ上にあるリソースの身元や場所は、たいていひとつの URL (Uniform Resource Locator、 一種の URI) によって与えられます。時々、同一の URI によって身元や場所が与えられない理由が存在します。要求されたリソースについて、クライアントに別の場所へアクセスしてほしい場合に、HTTP では {{HTTPHeader("Alt-Svc")}} ヘッダーを使用します。</p> + +<h2 id="URLs_and_URNs" name="URLs_and_URNs">URL と URN</h2> + +<h3 id="URLs" name="URLs">URL</h3> + +<p>もっとも一般的な URI の形式は Uniform Resource Locator ({{Glossary("URL")}}) であり、<em>ウェブアドレス</em>として知られています。</p> + +<pre class="notranslate">https://developer.mozilla.org +https://developer.mozilla.org/en-US/docs/Learn/ +https://developer.mozilla.org/en-US/search?q=URL</pre> + +<p>ブラウザーのアドレスバーに URL を入力して、URL に関連付けられているページ (リソース) を読み込むように指示できます。</p> + +<p>URL はさまざまな部品で構成されており、必須のものと省略可能なものがあります。より複雑な URL の例は、以下のようになります:</p> + +<pre class="notranslate">http://www.example.com:80/path/to/myfile.html?key1=value1&key2=value2#SomewhereInTheDocument</pre> + +<h3 id="URNs" name="URNs">URN</h3> + +<p>Uniform Resource Name (URN) は、特定の名前空間内の名前によってリソースを特定する URI です。</p> + +<pre class="notranslate">urn:isbn:9780141036144 +urn:ietf:rfc:7230 +</pre> + +<p>2 つの URN は以下のものに対応します:</p> + +<ul> + <li>George Orwell の書籍 Nineteen Eighty-Four</li> + <li>IETF 仕様書 7230、 Hypertext Transfer Protocol (HTTP/1.1): Message Syntax and Routing</li> +</ul> + +<h2 id="Syntax_of_Uniform_Resource_Identifiers_URIs" name="Syntax_of_Uniform_Resource_Identifiers_(URIs)">Uniform Resource Identifiers (URI) の構文</h2> + +<h3 id="Scheme_or_protocol" name="Scheme_or_protocol">スキームまたはプロトコル</h3> + +<dl> + <dt><img alt="Protocol" src="https://mdn.mozillademos.org/files/8013/mdn-url-protocol@x2.png" style="height: 70px; width: 440px;"></dt> + <dd><code>http://</code> はプロトコルです。これは、ブラウザーが使用すべきプロトコルを示します。通常、 HTTP プロトコルまたは安全なバージョンである HTTPS になります。ウェブではこれら2つのうちひとつを必要としますが、ブラウザーは <code>mailto:</code> (メールクライアントを開く) やファイル転送を扱う <code>ftp:</code> といったほかのプロトコルの扱い方も知っていますので、このようなプロトコルが現れても驚かないでください。主なスキームは以下のとおりです:</dd> +</dl> + +<table class="standard-table"> + <thead> + <tr> + <th scope="col">スキーム</th> + <th scope="col">説明</th> + </tr> + </thead> + <tbody> + <tr> + <td>data</td> + <td><a href="/ja/docs/Web/HTTP/Basics_of_HTTP/Data_URIs">Data URI</a></td> + </tr> + <tr> + <td>file</td> + <td>ホスト固有のファイル名</td> + </tr> + <tr> + <td>ftp</td> + <td><a href="/ja/docs/Glossary/FTP">File Transfer Protocol</a></td> + </tr> + <tr> + <td>http/https</td> + <td><a href="/ja/docs/Glossary/HTTP">Hyper text transfer protocol (安全)</a></td> + </tr> + <tr> + <td>javascript</td> + <td>URL に埋め込まれた JavaScript のコード</td> + </tr> + <tr> + <td>mailto</td> + <td>電子メールアドレス</td> + </tr> + <tr> + <td>ssh</td> + <td>Secure shell</td> + </tr> + <tr> + <td>tel</td> + <td>電話</td> + </tr> + <tr> + <td>urn</td> + <td>Uniform Resource Names</td> + </tr> + <tr> + <td>view-source</td> + <td>リソースのソースコード</td> + </tr> + <tr> + <td>ws/wss</td> + <td>(暗号化された) <a href="/ja/docs/Web/API/WebSockets_API">WebSocket</a> 接続</td> + </tr> + </tbody> +</table> + +<h3 id="Authority" name="Authority">オーソリティ</h3> + +<dl> + <dt><img alt="Domaine Name" src="https://mdn.mozillademos.org/files/8015/mdn-url-domain@x2.png" style="height: 70px; width: 440px;"></dt> + <dd><code>www.example.com</code> は、名前空間を統制するドメイン名またはオーソリティです。これは、どのウェブサーバーが要求されているかを示します。代わりに {{Glossary("IP address","IP アドレス")}} を直接使用することもできますが、利便性が低いためウェブではあまり使用されません。</dd> +</dl> + +<h3 id="Port" name="Port">ポート</h3> + +<dl> + <dt><img alt="Port" src="https://mdn.mozillademos.org/files/8017/mdn-url-port@x2.png" style="height: 70px; width: 440px;"></dt> + <dd>ここで <code>:80</code> はポートです。これはウェブサーバー内のリソースへアクセスするために使用する、技術上の "出入口" です。ウェブサーバーがリソースへのアクセスを受け入れるために HTTP プロトコルの標準ポート (HTTP では 80、HTTPS では 443) を使用している場合、通常はポートを省略します。それ以外の場合は、ポートが必須です。</dd> +</dl> + +<h3 id="Path" name="Path">パス</h3> + +<dl> + <dt><img alt="Path to the file" src="https://mdn.mozillademos.org/files/8019/mdn-url-path@x2.png" style="height: 70px; width: 440px;"></dt> + <dd><code>/path/to/myfile.html</code> は、ウェブサーバー内にあるリソースのパスです。初期のウェブではこのようなパスが、ウェブサーバー内の物理的なファイルの場所を表していました。現代のパスはたいてい物理的な実情と関係がない、ウェブサーバーによって制御される抽象的なものになっています。</dd> +</dl> + +<h3 id="Query" name="Query">クエリ</h3> + +<dl> + <dt><img alt="Parameters" src="https://mdn.mozillademos.org/files/8021/mdn-url-parameters@x2.png" style="height: 70px; width: 440px;"></dt> + <dd><code>?key1=value1&key2=value2</code> は、ウェブサーバーに提供する追加パラメーターです。このパラメーターは <code>&</code> 記号で区切られた、キーと値のペアのリストです。ウェブサーバーは、ユーザーへリソースを返す前に追加の処理を行うために、このパラメーターを使用できます。それぞれのウェブサーバーはパラメーターについて独自の規則を持っており、特定のウェブサーバーがパラメーターを扱う方法を知るために唯一信頼できる方法は、ウェブサーバーの所有者に尋ねることです。</dd> +</dl> + +<h3 id="Fragment" name="Fragment">フラグメント</h3> + +<dl> + <dt><img alt="Anchor" src="https://mdn.mozillademos.org/files/8023/mdn-url-anchor@x2.png" style="height: 70px; width: 440px;"></dt> + <dd><code>#SomewhereInTheDocument</code> は、リソース自体の別の場所へのアンカーです。アンカーはリソース内の一種の "ブックマーク" を表しており、 "ブックマーク" 地点にあるコンテンツを表示するようにブラウザーへ指示を与えます。例えば HTML ドキュメントでは、ブラウザーはアンカーが定義されている位置にスクロールします。動画や音声のドキュメントでは、ブラウザーはアンカーが示す位置への移動を試みます。 # より後の部分はフラグメント識別としても知られており、要求でサーバーには送信されないことは注目に値します。</dd> +</dl> + +<h2 id="使用上のメモ">使用上のメモ</h2> + +<p>{{Glossary("HTML")}} コンテンツの中で URL を使用強いるとき、一般に使うことができる URL スキームはわずかです。サブリソースを参照する場合 — つまり、最初は巨大な文書の一部だけを使用する場合 — は、 HTTP 及び HTTPS スキームしか使用することができません。加えて、ブラウザーはセキュリティ上の理由から、 FTP を使用したサブリソースの読み込みの対応を削除しつつあります。</p> + +<p>FTP は最上位では利用できますが (ブラウザーの URL バーに直接入力したり、リンクの対象とした理)、ブラウザーによっては FTP コンテンツの読み込みを他のアプリケーションに委譲するかもしれません。</p> + +<h2 id="Examples" name="Examples">例</h2> + +<pre class="notranslate">https://developer.mozilla.org/en-US/docs/Learn +tel:+1-816-555-1212 +git@github.com:mdn/browser-compat-data.git +ftp://example.org/resource.txt +urn:isbn:9780141036144 +mailto:help@supercyberhelpdesk.info +</pre> + +<h2 id="Specifications" name="Specifications">仕様書</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">仕様書</th> + <th scope="col">題名</th> + </tr> + <tr> + <td>{{RFC("7230", "Uniform Resource Identifiers", "2.7")}}</td> + <td>Hypertext Transfer Protocol (HTTP/1.1): Message Syntax and Routing</td> + </tr> + </tbody> +</table> + +<h2 id="See_also" name="See_also">関連情報</h2> + +<ul> + <li><a href="/ja/docs/Learn/Common_questions/What_is_a_URL">URL とは何か</a></li> + <li><a href="http://www.iana.org/assignments/uri-schemes/uri-schemes.xhtml">IANA list of URI schemes</a></li> +</ul> diff --git a/files/ja/web/http/basics_of_http/index.html b/files/ja/web/http/basics_of_http/index.html new file mode 100644 index 0000000000..0ea3565f5a --- /dev/null +++ b/files/ja/web/http/basics_of_http/index.html @@ -0,0 +1,50 @@ +--- +title: HTTP の基本 +slug: Web/HTTP/Basics_of_HTTP +tags: + - Guide + - HTTP + - ガイド + - 概要 +translation_of: Web/HTTP/Basics_of_HTTP +--- +<div>{{HTTPSidebar}}</div> + +<p>HTTP はとても拡張性のあるプロトコルです。リソースの記述や URI などわずかな基本概念に基づいており、メッセージ構造が単純で、コミュニケーションの流れはクライアント・サーバー構造です。これらの基本概念の上に、いくつもの拡張が何年にもわたって行われ、新しい機能や新しい意味が新しい HTTP メソッドやヘッダーによって追加されています。</p> + +<h2 id="Articles" name="Articles">記事</h2> + +<dl> + <dt><a href="/ja/docs/Web/HTTP/Overview">HTTP の概要</a></dt> + <dd>HTTP とは何であるか、そしてウェブアーキテクチャにおけるこのプロトコルの役割について説明します。</dd> + <dt><a href="/ja/docs/Web/HTTP/Basics_of_HTTP/Evolution_of_HTTP">HTTP の進化</a></dt> + <dd>HTTP は1990年代初めに作成され、何度も拡張されました。この記事では、 HTTP/0.9、 HTTP/1.0、 HTTP/1.1、現代の HTTP/2、および長年にわたり導入されている小さなノベルティについての歴史を説明します。</dd> + <dt><a href="/ja/docs/Web/HTTP/Basics_of_HTTP/Negotiating_an_HTTP_version">HTTP バージョンのネゴシエーション</a></dt> + <dd>クライアントとサーバーが特定の HTTP バージョンをネゴシエートし、最終的に使用されたプロトコルバージョンをアップグレードする方法を説明します。</dd> + <dt><a href="/ja/docs/Web/HTTP/Resources_and_URIs">リソースと URI</a></dt> + <dd>ウェブ上のリソース、識別子、および場所の概念を簡単に紹介します。</dd> + <dt><a href="/ja/docs/Web/HTTP/Basics_of_HTTP/Identifying_resources_on_the_Web">ウェブ上のリソースの識別</a></dt> + <dd>ウェブリソースの参照方法とどのように配置されるのかについて説明します。</dd> + <dt><a href="/ja/docs/Web/HTTP/Basics_of_HTTP/Data_URIs">データ URI</a></dt> + <dd>それが表すリソースを直接埋め込む特定の種類の URI。データ URI はとても便利ですが、いくつかの注意点があります。</dd> + <dt><a href="/ja/docs/Web/HTTP/Basics_of_HTTP/Resource_URLs">リソース URL</a> {{Non-standard_Inline}}</dt> + <dd><code>resource:</code> というスキームの接頭辞が付いた URL は、 Firefox と Firefox のブラウザー拡張機能によってリソースを内部的に読み込むために使用されますが、情報の一部はブラウザーが接続するサイトでも利用できます。</dd> + <dt>リソースの識別と場所の分離: Alt-Svc HTTP ヘッダー</dt> + <dd>ほとんどの場合、ウェブリソースの識別子と場所は共有されますが、これは {{HTTPHeader("Alt-Svc")}} ヘッダーで変更できます。</dd> + <dt><a href="/ja/docs/Web/HTTP/Basics_of_HTTP/MIME_types">MIME タイプ</a></dt> + <dd>HTTP/1.0 以降では、様々なタイプのコンテンツを送信することができます。 この記事では {{HTTPHeader("Content-Type")}} ヘッダーと MIME 標準を使用してこれがどのように行われるかについて説明します。</dd> + <dt><a href="/ja/docs/Web/HTTP/Basics_of_HTTP/Choosing_between_www_and_non-www_URLs">www URL とそうでない URL の選択</a></dt> + <dd>www という接頭辞のドメインを使うかどうかに関するアドバイスで、この記事では選択の結果とその作成方法について説明します。</dd> + <dt><a href="/ja/docs/Web/HTTP/Flow_of_an_HTTP_session">HTTP セッションの流れ</a></dt> + <dd>この基本的な記事では典型的な HTTP セッションについて説明します。ブラウザーのリンクをクリックすると、何が起こるのでしょうか</dd> + <dt><a href="/ja/docs/Web/HTTP/Messages">HTTP メッセージ</a></dt> + <dd>HTTP リクエストまたはレスポンス中に送信されるメッセージは、非常に明確な構造を持っています。この入門記事ではその構造、目的、可能性について説明します。</dd> + <dt><a href="/ja/docs/Web/HTTP/Frame and message structure in HTTP_2">HTTP/2 でのフレームとメッセージ構造</a></dt> + <dd>HTTP/2 は HTTP/1.x メッセージをカプセル化し、バイナリフレームで表現します。この記事ではフレームの構造、目的、エンコード方法について説明します。</dd> + <dt><a href="/ja/docs/Web/HTTP/Connection_management_in_HTTP_1.x">HTTP/1.x でのコネクション管理</a></dt> + <dd>HTTP/1.1 は持続的な接続とパイプライン処理をサポートする HTTP の最初のバージョンでした。この記事ではこれらの2つの概念について説明します。</dd> + <dt><a href="/ja/docs/Web/HTTP/Connection_management_in_HTTP_2">HTTP/2 でのコネクション管理</a></dt> + <dd>HTTP/2 では接続の作成方法とメンテナンス方法が完全に再考されました。この記事では HTTP フレームが多重化を許可し、以前の HTTP バージョンの 'head-of-line' ブロック問題を解決する方法について説明します。</dd> + <dt><a href="/ja/docs/Web/HTTP/Content_negotiation">コンテンツネゴシエーション</a></dt> + <dd>HTTP はブラウザが好みの形式、言語、またはエンコーディングをアナウンスするための方法として <code>Accept-</code> から始まる一連のヘッダを導入しています。この記事ではこの宣言がどのように起こるか、サーバがどのように反応すると予想され、どのように最も適切な応答を選択するかについて説明します。</dd> +</dl> diff --git a/files/ja/web/http/basics_of_http/mime_types/common_types/index.html b/files/ja/web/http/basics_of_http/mime_types/common_types/index.html new file mode 100644 index 0000000000..e19297a919 --- /dev/null +++ b/files/ja/web/http/basics_of_http/mime_types/common_types/index.html @@ -0,0 +1,405 @@ +--- +title: よくある MIME タイプ +slug: Web/HTTP/Basics_of_HTTP/MIME_types/Common_types +tags: + - HTTP + - MIME + - MIME タイプ + - Reference + - タイプ + - テキスト + - ファイル + - ファイルタイプ + - 動画 + - 音声 +translation_of: Web/HTTP/Basics_of_HTTP/MIME_types/Common_types +--- +<div>{{HTTPSidebar}}</div> + +<p>これは文書の種類に関連付けられている MIME タイプの一覧であり、一般的な拡張子の昇順に並べています。</p> + +<p>2 つの主要な MIME タイプは、既定のタイプの役割として重要です。</p> + +<ul> + <li><code>text/plain</code> は、テキスト形式ファイルの既定の値です。テキスト形式ファイルは人間が読めるはずであり、バイナリーデータを含んではなりません。</li> + <li><code>application/octet-stream</code> は、上記以外の場合の既定値です。未知の種類のファイルは、このタイプを使用するべきです。ブラウザーはこれらのファイルを扱う際に特に注意を払い、危険な動作からユーザーを保護しようとします。</li> +</ul> + +<p>IANA は MIME メディアタイプの公式な登録先であり、<a href="http://www.iana.org/assignments/media-types/media-types.xhtml">すべての公式 MIME タイプの一覧</a> を管理しています。以下の表は、ウェブ向けに重要な一部の MIME タイプを掲載しています:</p> + +<table class="standard-table"> + <thead> + <tr> + <th scope="col">拡張子</th> + <th scope="col">文書の種類</th> + <th scope="col">MIME タイプ</th> + </tr> + </thead> + <tbody> + <tr> + <td><code>.aac</code></td> + <td>AAC 音声</td> + <td><code>audio/aac</code></td> + </tr> + <tr> + <td><code>.abw</code></td> + <td><a href="https://ja.wikipedia.org/wiki/AbiWord">AbiWord</a> 文書</td> + <td><code>application/x-abiword</code></td> + </tr> + <tr> + <td><code>.arc</code></td> + <td>(複数のファイルが埋め込まれた) アーカイブ文書</td> + <td><code>application/x-freearc</code></td> + </tr> + <tr> + <td><code>.avi</code></td> + <td>AVI: Audio Video Interleave</td> + <td><code>video/x-msvideo</code></td> + </tr> + <tr> + <td><code>.azw</code></td> + <td>Amazon Kindle eBook 形式</td> + <td><code>application/vnd.amazon.ebook</code></td> + </tr> + <tr> + <td><code>.bin</code></td> + <td>任意の種類のバイナリーデータ</td> + <td><code>application/octet-stream</code></td> + </tr> + <tr> + <td><code>.bmp</code></td> + <td>Windows OS/2 ビットマップ画像</td> + <td><code>image/bmp</code></td> + </tr> + <tr> + <td><code>.bz</code></td> + <td>BZip アーカイブ</td> + <td><code>application/x-bzip</code></td> + </tr> + <tr> + <td><code>.bz2</code></td> + <td>BZip2 アーカイブ</td> + <td><code>application/x-bzip2</code></td> + </tr> + <tr> + <td><code>.csh</code></td> + <td>C-Shell スクリプト</td> + <td><code>application/x-csh</code></td> + </tr> + <tr> + <td><code>.css</code></td> + <td>カスケーディングスタイルシート (CSS)</td> + <td><code>text/css</code></td> + </tr> + <tr> + <td><code>.csv</code></td> + <td>カンマ区切り値 (CSV)</td> + <td><code>text/csv</code></td> + </tr> + <tr> + <td><code>.doc</code></td> + <td>Microsoft Word</td> + <td><code>application/msword</code></td> + </tr> + <tr> + <td><code>.docx</code></td> + <td>Microsoft Word (OpenXML)</td> + <td><code>application/vnd.openxmlformats-officedocument.wordprocessingml.document</code></td> + </tr> + <tr> + <td><code>.eot</code></td> + <td>MS 埋め込み OpenType フォント</td> + <td><code>application/vnd.ms-fontobject</code></td> + </tr> + <tr> + <td><code>.epub</code></td> + <td>電子出版 (EPUB)</td> + <td><code>application/epub+zip</code></td> + </tr> + <tr> + <td><code>.gz</code></td> + <td>GZip 圧縮アーカイブ</td> + <td><code>application/gzip</code></td> + </tr> + <tr> + <td><code>.gif</code></td> + <td>グラフィック交換形式 (GIF)</td> + <td><code>image/gif</code></td> + </tr> + <tr> + <td><code>.htm<br> + .html</code></td> + <td>ハイパーテキストマークアップ言語 (HTML)</td> + <td><code>text/html</code></td> + </tr> + <tr> + <td><code>.ico</code></td> + <td>アイコン形式</td> + <td><code>image/vnd.microsoft.icon</code></td> + </tr> + <tr> + <td><code>.ics</code></td> + <td>iCalendar 形式</td> + <td><code>text/calendar</code></td> + </tr> + <tr> + <td><code>.jar</code></td> + <td>Java Archive (JAR)</td> + <td><code>application/java-archive</code></td> + </tr> + <tr> + <td><code>.jpeg</code><br> + <code>.jpg</code></td> + <td>JPEG 画像</td> + <td><code>image/jpeg</code></td> + </tr> + <tr> + <td><code>.js</code></td> + <td>JavaScript</td> + <td> + <p>以下の仕様書によれば <code>text/javascript</code></p> + + <ul> + <li><a href="https://html.spec.whatwg.org/multipage/#scriptingLanguages">https://html.spec.whatwg.org/multipage/#scriptingLanguages</a></li> + <li><a href="https://html.spec.whatwg.org/multipage/#dependencies:willful-violation">https://html.spec.whatwg.org/multipage/#dependencies:willful-violation</a></li> + <li><a href="https://datatracker.ietf.org/doc/draft-ietf-dispatch-javascript-mjs/">https://datatracker.ietf.org/doc/draft-ietf-dispatch-javascript-mjs/</a></li> + </ul> + </td> + </tr> + <tr> + <td><code>.json</code></td> + <td>JSON 形式</td> + <td><code>application/json</code></td> + </tr> + <tr> + <td><code>.jsonld</code></td> + <td>JSON-LD 形式</td> + <td><code>application/ld+json</code></td> + </tr> + <tr> + <td><code>.mid</code><br> + <code>.midi</code></td> + <td>Musical Instrument Digital Interface (MIDI)</td> + <td><code>audio/midi</code> <code>audio/x-midi</code></td> + </tr> + <tr> + <td><code>.mjs</code></td> + <td>JavaScript モジュール</td> + <td><code>text/javascript</code></td> + </tr> + <tr> + <td><code>.mp3</code></td> + <td>MP3 音声</td> + <td><code>audio/mpeg</code></td> + </tr> + <tr> + <td><code>.mpeg</code></td> + <td>MPEG 動画</td> + <td><code>video/mpeg</code></td> + </tr> + <tr> + <td><code>.mpkg</code></td> + <td>Apple Installer Package</td> + <td><code>application/vnd.apple.installer+xml</code></td> + </tr> + <tr> + <td><code>.odp</code></td> + <td>OpenDocuemnt プレゼンテーション文書</td> + <td><code>application/vnd.oasis.opendocument.presentation</code></td> + </tr> + <tr> + <td><code>.ods</code></td> + <td>OpenDocuemnt 表計算文書</td> + <td><code>application/vnd.oasis.opendocument.spreadsheet</code></td> + </tr> + <tr> + <td><code>.odt</code></td> + <td>OpenDocument テキスト文書</td> + <td><code>application/vnd.oasis.opendocument.text</code></td> + </tr> + <tr> + <td><code>.oga</code></td> + <td>OGG 音声</td> + <td><code>audio/ogg</code></td> + </tr> + <tr> + <td><code>.ogv</code></td> + <td>OGG 動画</td> + <td><code>video/ogg</code></td> + </tr> + <tr> + <td><code>.ogx</code></td> + <td>OGG</td> + <td><code>application/ogg</code></td> + </tr> + <tr> + <td><code>.opus</code></td> + <td>Opus 音声</td> + <td><code>audio/opus</code></td> + </tr> + <tr> + <td><code>.otf</code></td> + <td>OpenType フォント</td> + <td><code>font/otf</code></td> + </tr> + <tr> + <td><code>.png</code></td> + <td>Portable Network Graphics</td> + <td><code>image/png</code></td> + </tr> + <tr> + <td><code>.pdf</code></td> + <td>Adobe <a href="https://acrobat.adobe.com/jp/ja/why-adobe/about-adobe-pdf.html">Portable Document Format</a> (PDF)</td> + <td><code>application/pdf</code></td> + </tr> + <tr> + <td><code>.php</code></td> + <td>Hypertext Preprocessor (<strong>Personal Home Page</strong>)</td> + <td><code>application/x-httpd-php</code></td> + </tr> + <tr> + <td><code>.ppt</code></td> + <td>Microsoft PowerPoint</td> + <td><code>application/vnd.ms-powerpoint</code></td> + </tr> + <tr> + <td><code>.pptx</code></td> + <td>Microsoft PowerPoint (OpenXML)</td> + <td><code>application/vnd.openxmlformats-officedocument.presentationml.presentation</code></td> + </tr> + <tr> + <td><code>.rar</code></td> + <td>RAR アーカイブ</td> + <td><code>application/vnd.rar</code></td> + </tr> + <tr> + <td><code>.rtf</code></td> + <td>リッチテキスト形式 (RTF)</td> + <td><code>application/rtf</code></td> + </tr> + <tr> + <td><code>.sh</code></td> + <td>Bourne shell スクリプト</td> + <td><code>application/x-sh</code></td> + </tr> + <tr> + <td><code>.svg</code></td> + <td>Scalable Vector Graphics (SVG)</td> + <td><code>image/svg+xml</code></td> + </tr> + <tr> + <td><code>.swf</code></td> + <td><a href="https://en.wikipedia.org/wiki/SWF">Small web format</a> (SWF) または Adobe Flash 文書</td> + <td><code>application/x-shockwave-flash</code></td> + </tr> + <tr> + <td><code>.tar</code></td> + <td>Tape Archive (TAR)</td> + <td><code>application/x-tar</code></td> + </tr> + <tr> + <td><code>.tif<br> + .tiff</code></td> + <td>Tagged Image File Format (TIFF)</td> + <td><code>image/tiff</code></td> + </tr> + <tr> + <td><code>.ts</code></td> + <td>MPEG transport stream</td> + <td><code>video/mp2t</code></td> + </tr> + <tr> + <td><code>.ttf</code></td> + <td>TrueType フォント</td> + <td><code>font/ttf</code></td> + </tr> + <tr> + <td><code>.txt</code></td> + <td>テキストファイル (一般に ASCII or ISO 8859-<em>n</em>)</td> + <td><code>text/plain</code></td> + </tr> + <tr> + <td><code>.vsd</code></td> + <td>Microsoft Visio</td> + <td><code>application/vnd.visio</code></td> + </tr> + <tr> + <td><code>.wav</code></td> + <td>Waveform 音声形式</td> + <td><code>audio/wav</code></td> + </tr> + <tr> + <td><code>.weba</code></td> + <td>WEBM 音声</td> + <td><code>audio/webm</code></td> + </tr> + <tr> + <td><code>.webm</code></td> + <td>WEBM 動画</td> + <td><code>video/webm</code></td> + </tr> + <tr> + <td><code>.webp</code></td> + <td>WEBP 画像</td> + <td><code>image/webp</code></td> + </tr> + <tr> + <td><code>.woff</code></td> + <td>Web Open Font Format (WOFF)</td> + <td><code>font/woff</code></td> + </tr> + <tr> + <td><code>.woff2</code></td> + <td>Web Open Font Format (WOFF)</td> + <td><code>font/woff2</code></td> + </tr> + <tr> + <td><code>.xhtml</code></td> + <td>XHTML</td> + <td><code>application/xhtml+xml</code></td> + </tr> + <tr> + <td><code>.xls</code></td> + <td>Microsoft Excel</td> + <td><code>application/vnd.ms-excel</code></td> + </tr> + <tr> + <td><code>.xlsx</code></td> + <td>Microsoft Excel (OpenXML)</td> + <td><code>application/vnd.openxmlformats-officedocument.spreadsheetml.sheet</code></td> + </tr> + <tr> + <td><code>.xml</code></td> + <td><code>XML</code></td> + <td><code>application/xml</code>: 一般のユーザーから読めるもの<em>ではない</em>場合 (<a href="https://tools.ietf.org/html/rfc3023#section-3">RFC 3023</a>, section 3)<br> + <code>text/xml</code>: 一般のユーザーから読めるものである場合 (<a href="https://tools.ietf.org/html/rfc3023#section-3">RFC 3023</a>, section 3)</td> + </tr> + <tr> + <td><code>.xul</code></td> + <td>XUL</td> + <td><code>application/vnd.mozilla.xul+xml</code></td> + </tr> + <tr> + <td><code>.zip</code></td> + <td>ZIP アーカイブ</td> + <td><code>application/zip</code></td> + </tr> + <tr> + <td><code>.3gp</code></td> + <td><a href="https://en.wikipedia.org/wiki/3GP_and_3G2">3GPP</a> 音声/動画コンテナー</td> + <td><code>video/3gpp</code><br> + 動画を含まない場合は <code>audio/3gpp</code></td> + </tr> + <tr> + <td><code>.3g2</code></td> + <td><a href="https://en.wikipedia.org/wiki/3GP_and_3G2">3GPP2</a> 音声/動画コンテナー</td> + <td><code>video/3gpp2</code><br> + 動画を含まない場合は <code>audio/3gpp2</code></td> + </tr> + <tr> + <td><code>.7z</code></td> + <td><a href="https://ja.wikipedia.org/wiki/7-Zip">7-zip</a> アーカイブ</td> + <td><code>application/x-7z-compressed</code></td> + </tr> + </tbody> +</table> diff --git a/files/ja/web/http/basics_of_http/mime_types/index.html b/files/ja/web/http/basics_of_http/mime_types/index.html new file mode 100644 index 0000000000..687515e7f6 --- /dev/null +++ b/files/ja/web/http/basics_of_http/mime_types/index.html @@ -0,0 +1,329 @@ +--- +title: MIME タイプ (IANA メディアタイプ) +slug: Web/HTTP/Basics_of_HTTP/MIME_types +tags: + - Content-Type + - Guide + - HTTP + - MIME タイプ + - application/javascript + - application/json + - application/xml + - エンティティヘッダー +translation_of: Web/HTTP/Basics_of_HTTP/MIME_types +--- +<div>{{HTTPSidebar}}</div> + +<p><span class="seoSummary"><strong>メディアタイプ</strong> (別名 <strong>Multipurpose Internet Mail Extensions または MIME タイプ</strong>) は、文書、ファイル、またはバイト列の性質や形式を示す標準です。</span> IETF の {{RFC(6838)}} で定義され、標準化されています。</p> + +<p><a href="https://www.iana.org/">Internet Assigned Numbers Authority (IANA)</a> はすべての公式の MIME タイプを管理しており、<a href="https://www.iana.org/assignments/media-types/media-types.xhtml">Media Types</a> ページで最新の完全なリストを見つけることができます。</p> + +<div class="warning"> +<p><strong>重要:</strong>ブラウザーは URL を処理する方法を決定するために、<em>ファイル拡張子ではなく</em> MIME タイプを使用しますので、ウェブサーバーは正しい MIME タイプをレスポンスの {{HTTPHeader("Content-Type")}} ヘッダーで送信することが重要です。これが正しく構成されていないと、ブラウザーはファイルの中身を誤って解釈し、サイトが正しく動作しなかったり、ダウンロードファイルが誤って扱われたりすることがあります。</p> +</div> + +<h2 id="Structure_of_a_MIME_type" name="Structure_of_a_MIME_type">MIME タイプの構造</h2> + +<p>もっとも単純な MIME タイプは<var>タイプ</var>と<var>サブタイプ</var>で構成されます。これらはどちらも文字列で、その間をスラッシュ (<code>/</code>) で接続し、 MIME タイプを構成します。{{Glossary("Whitespace", "ホワイトスペース")}}は MIME タイプでは許可されていません。</p> + +<pre class="syntaxbox notranslate"><var>タイプ</var>/<var>サブタイプ</var></pre> + +<p><var>タイプ</var>はデータ型が当てはまる全般的なカテゴリ、すなわち <code>video</code> や <code>text</code> などを表します。<var>サブタイプ</var>は、その MIME タイプが表す正確なデータの種類を識別します。例えば、 MIME タイプが <code>text</code> の場合、サブタイプは <code>plain</code> (プレインテキスト)、 <code>html</code> ({{Glossary("HTML")}} ソースコード)、 <code>calendar</code> (iCalendar/<code>.ics</code>) ファイルなどです。</p> + +<p>すべてのタイプは利用可能なサブタイプを持っており、 MIME タイプは常にタイプとサブタイプの両方を持ち、一方だけで使われることはありません。</p> + +<p>任意で<strong>引数</strong>を追加して、追加の詳細情報を提供することができます。</p> + +<pre class="syntaxbox notranslate"><var>タイプ</var>/<var>サブタイプ</var>;<var>引数</var>=<var>値</var></pre> + +<p>例えば、 MIME タイプのうちメインタイプが <code>text</code> であるものでは、任意で <code>charset</code> 引数を使用して、データ内の文字の文字コードを指定することができます。 <code>charset</code> が指定されない場合は、既定では {{Glossary("ASCII")}} (<code>US-ASCII</code>) が、{{Glossary("user agent", "ユーザーエージェント")}}の設定で上書きされない限り使われます。 UTF-8 のテキストファイルを指定するには、 MIME タイプとして <code>text/plain;charset=UTF-8</code> が使用されます。</p> + +<p>MIME タイプは大文字・小文字が区別されませんが、大文字・小文字の区別が特定の意味を持つ可能性がある引数の値を除いて、伝統的に小文字で記述されます。</p> + +<h3 id="Types" name="Types">タイプ</h3> + +<p>タイプには <ruby><strong>個別型</strong><rp> (</rp><rt>discrete</rt></ruby> と<ruby><strong>マルチパート型</strong><rp> (</rp><rt>multipart</rt></ruby> の二種類があります。個別型は単一のファイルまたはメディアを表すタイプで、単一のテキストファイルや音楽ファイル、単一の映像などです。マルチパート型は複数のコンポーネント部品によって構成される文書を表すもので、それぞれの部分が固有の MIME タイプを持ちます。また、マルチパート型は一度のトランザクションで一緒に送信される複数のファイルをまとめることもできます。例えば、マルチパート MIME タイプは複数のファイルを電子メールに添付するときに使用されます。</p> + +<h4 id="Discrete_types" name="Discrete_types">個別型</h4> + +<p>現在 IANA に登録されている個別型は以下のとおりです。</p> + +<dl> + <dt><code>application</code><a href="https://www.iana.org/assignments/media-types/media-types.xhtml#application" style="float: right;">IANA での一覧</a></dt> + <dd>他のタイプに明確に当てはまらない、あらゆる種類のバイナリデータです。何らかの方法で実行されたり解釈されたりするデータ、または利用するのに特定のアプリケーションや特定の種類のアプリケーションを必要とするバイナリデータのどちらかです。汎用的なバイナリデータ (または本当のタイプが不明なバイナリデータ) は <code>application/octet-stream</code> です。他のよくある例として、 <code>application/pdf</code>, <code>application/pkcs8</code>, <code>application/zip</code> があります。</dd> + <dt><code>audio</code> <a href="https://www.iana.org/assignments/media-types/media-types.xhtml#audio" style="float: right;">IANA での一覧</a></dt> + <dd>音声または音楽データです。例えば、 <code>audio/mpeg</code>, <code>audio/vorbis</code> などがあります。</dd> + <dt><code>example</code></dt> + <dd>MIME タイプの使用方法を例示する際のプレイスホルダーとして使用するために予約されています。これらはサンプルコードのリストや文書の外で使用してはいけません。 <code>example</code> はサブタイプとして使用することもできます。例えば、ウェブ上で音声として動作する例として、 MIME タイプの <code>audio/example</code> を使用してタイプがプレイスホルダーであり、実世界で使用されるコードでは適切なもので置き換えられることを表します。</dd> + <dt><code>font</code> <a href="https://www.iana.org/assignments/media-types/media-types.xhtml#font" style="float: right;">IANA での一覧</a></dt> + <dd>フォントやタイプフェイスのデータです。よく使われるものとしては <code>font/woff</code>, <code>font/ttf</code>, <code>font/otf</code> などがあります。</dd> + <dt><code>image</code> <a href="https://www.iana.org/assignments/media-types/media-types.xhtml#image" style="float: right;">IANA での一覧</a></dt> + <dd>画像またはグラフィックデータで、ビットマップとベクター静止画像の両方を含み、さらに静止画像形式のアニメーション版であるアニメーション {{Glossary("GIF")}} や APNG なども含みます。よく使われるものとしては、 <code>image/jpeg</code>, <code>image/png</code>, <code>image/svg+xml</code> などがあります。</dd> + <dt><code>model</code> <a href="https://www.iana.org/assignments/media-types/media-types.xhtml#model" style="float: right;">IANA での一覧</a></dt> + <dd>三次元のオブジェクトやシーンなどのモデルデータです。例えば、 <code>model/3mf</code> や <code>model/vml</code> などがあります。</dd> + <dt><code>text</code> <a href="https://www.iana.org/assignments/media-types/media-types.xhtml#text" style="float: right;">IANA での一覧</a></dt> + <dd>テキストのみのデータで、人間が読むことができるあらゆるコンテンツ、ソースコード、コンマ区切り値 (CSV) 形式のデータのようなテキストデータを含みます。例えば、 <code>text/plain</code>, <code>text/csv</code>, <code>text/html</code> などがあります。</dd> + <dt><code>video</code> <a href="https://www.iana.org/assignments/media-types/media-types.xhtml#video" style="float: right;">IANA での一覧</a></dt> + <dd>動画のデータまたはファイルで、 MP4 movies (<code>video/mp4</code>) などがあります。</dd> +</dl> + +<p>特定のサブタイプを持たないテキスト形式の文書には、 <code>text/plain</code> を使用してください。同様に、特定のサブタイプまたは既知のサブタイプを持たないバイナリ形式の文書には、 <code>application/octet-stream</code> を使用してください。</p> + +<h4 id="Multipart_types" name="Multipart_types">マルチパート型</h4> + +<p id="sect1"><strong>マルチパート</strong>型は、ふつうそれぞれ異なる MIME タイプを持つ複数の部品に分割される文書のカテゴリを示します。これらは、特に電子メールにおいて、同じトランザクションの一部である複数の別々のファイルを表すためにも使用されます。これらは<strong>複合文書</strong>を表します。</p> + +<p>HTTP は <code>multipart/form-data</code> が <a href="/ja/docs/Web/Guide/HTML/Forms">HTML フォーム</a>の {{HTTPMethod("POST")}} メソッドで使用されたり、 <code>multipart/byteranges</code> が文書の一部を送信するために {{HTTPStatus("206")}} <code>Partial Content</code> で使用されたりする例外を除いて、 HTTP はマルチパート文書を特定の方法で扱いません。メッセージは (おそらく文書をインラインで表示する方法がわからず、「名前を付けて保存」をすることを提案されるでしょうが) ブラウザーへ送信されます。</p> + +<p>マルチパート型は二種類があります。</p> + +<dl> + <dt><code>message</code> <a href="https://www.iana.org/assignments/media-types/media-types.xhtml#message" style="float: right;">IANA での一覧</a></dt> + <dd>A message that encapsulates other messages. This can be used, for instance, to represent an email that includes a forwarded message as part of its data, or to allow sending very large messages in chunks as if it were multiple messages. Examples include <code>message/rfc822</code> (for forwarded or replied-to message quoting) and <code>message/partial</code> to allow breaking a large message into smaller ones automatically to be reassembled by the recipient.</dd> + <dt><code>multipart</code> <a href="https://www.iana.org/assignments/media-types/media-types.xhtml#multipart" style="float: right;">IANA での一覧</a></dt> + <dd>Data that is comprised of multiple components which may individually have different MIME types. Examples include <code>multipart/form-data</code> (for data produced using the {{domxref("FormData")}} API) and <code>multipart/byteranges</code> (defined in {{RFC(7233, "5.4.1")}} and used with {{Glossary("HTTP")}}'s {{HTTPStatus(206)}} "Partial Content" response returned when the fetched data is only part of the content, such as is delivered using the {{HTTPHeader("Range")}} header).</dd> +</dl> + +<h2 id="Important_MIME_types_for_Web_developers" name="Important_MIME_types_for_Web_developers">ウェブ開発者向けの重要な MIME タイプ</h2> + +<h3 id="applicationoctet-stream">application/octet-stream</h3> + +<p>これは、バイナリファイルでは既定です。これは<em>未知のバイナリ形式</em>のファイルを表すものであり、ブラウザーはふつう実行したり、実行するべきか確認したりしません。これらは {{HTTPHeader("Content-Disposition")}} ヘッダーの値に <code>attachment</code> が設定されたかのように扱い、「名前を付けて保存」ダイアログを提案します。</p> + +<h3 id="textplain">text/plain</h3> + +<p>これは、テキスト形式のファイルの既定です。実際には「未知のテキスト形式」のファイルを表すものではありますが、ブラウザーは表示可能であると推測します。</p> + +<div class="blockIndicator note"> +<p><code>text/plain</code> は「任意のテキスト形式データ」を表すものではありませんので注意してください。特定の種類のテキスト形式のデータを想定している場合は、おそらくそのとおりに判断されないでしょう。特に、CSS ファイルを宣言する {{HTMLElement("link")}} 要素から <code>text/plain</code> 形式のファイルをダウンロードすると、 <code>text/plain</code> で示されたファイルは正しい CSS ファイルであると認識されません。 CSS の MIME タイプである <code>text/css</code> を使用しなければなりません。</p> +</div> + +<h3 id="textcss">text/css</h3> + +<p>ウェブページをスタイル付けするための CSS ファイルは <code>text/css</code> で送信することが<strong>必要</strong>です。サーバーが CSS ファイルについて <code>.css</code> の接尾辞を認識しない場合、 <code>text/plain</code> や <code>application/octet-stream</code> の MIME タイプで送信することがあります。その場合、多くのブラウザーから CSS として認識されず、無視されることになります。</p> + +<h3 id="texthtml">text/html</h3> + +<p>すべての HTML コンテンツは、このタイプで提供するべきです。 XHTML 向けの新たな MIME タイプ (<code>application/xhtml+xml</code> など) は、現在ではほぼ無用です。</p> + +<div class="blockIndicator note"> +<p><strong>メモ:</strong> XML の厳密な解釈ルールや、 <code><a href="/ja/docs/Web/API/CDATASection"><![CDATA[…]]></a></code> セクション、 HTML/SVG/MathML の名前空間に含まれない要素を使用したい場合は、 <code>application/xml</code> または <code>application/xhtml+xml</code> を使用してください。</p> +</div> + +<h3 id="textjavascript"><span id="JavaScript_types">text/javascript</span></h3> + +<p>HTML 仕様書では、 JavaScript ファイルは MIME タイプとして常に <code>text/javascript</code> を使用することになっています。他の値は妥当であると見なされず、これらを使用するとスクリプトが読み込まれなかったり、実行されなかったりする結果になる可能性があります。</p> + +<p>歴史的な理由で、 <a href="https://mimesniff.spec.whatwg.org/">MIME スニッフィング標準</a> (ブラウザーがメディアタイプをどのように解釈し、有効なタイプを持たないコンテンツをどう処理するかを定義する方法の定義) は、 JavaScript を以下のいずれかと基本的に一致する MIME タイプを使用して提供することを許可しています。</p> + +<ul> + <li><code>application/javascript</code></li> + <li><code>application/ecmascript</code></li> + <li><code>application/x-ecmascript</code> {{Non-standard_Inline}}</li> + <li><code>application/x-javascript</code> {{Non-standard_Inline}}</li> + <li><code>text/javascript</code></li> + <li><code>text/ecmascript</code></li> + <li><code>text/javascript1.0</code> {{Non-standard_Inline}}</li> + <li><code>text/javascript1.1</code> {{Non-standard_Inline}}</li> + <li><code>text/javascript1.2</code> {{Non-standard_Inline}}</li> + <li><code>text/javascript1.3</code> {{Non-standard_Inline}}</li> + <li><code>text/javascript1.4</code> {{Non-standard_Inline}}</li> + <li><code>text/javascript1.5</code> {{Non-standard_Inline}}</li> + <li><code>text/jscript</code> {{Non-standard_Inline}}</li> + <li><code>text/livescript</code> {{Non-standard_Inline}}</li> + <li><code>text/x-ecmascript</code> {{Non-standard_Inline}}</li> + <li><code>text/x-javascript</code> {{Non-standard_Inline}}</li> +</ul> + +<div class="blockIndicator note"> +<p><strong>Note:</strong> Even though any given {{Glossary("user agent")}} may support any or all of these, you should only use <code>text/javascript</code>. It's the only MIME type guaranteed to work now and into the future.</p> +</div> + +<p>Some content you find may have a <code>charset</code> parameter at the end of the <code>text/javascript</code> media type, to specify the character set used to represent the code's content. This is not valid, and in most cases will result in a script not being loaded.</p> + +<h3 id="Image_types" name="Image_types">画像タイプ</h3> + +<p>Files whose MIME type is <code>image</code> contain image data. The subtype specifies which specific image file format the data represents. Only a few image types are used commonly enough to be considered safe for use on web pages:</p> + +<p>{{page("/ja/docs/Web/Media/Formats/Image_types", "table-of-image-file-types")}}</p> + +<h3 id="Audio_and_video_types" name="Audio_and_video_types">音声と動画のタイプ</h3> + +<p>画像と同じく、 HTML は {{HTMLElement("audio")}} や {{HTMLElement("video")}} 要素で対応している型を定義していないので、ウェブで使用することができるのは一部のみです。 <a href="/ja/docs/Web/HTML/Supported_media_formats">HTML5 の audio と video 要素で対応しているメディア形式</a>で、使用可能なコーデックやコンテナーを説明しています。</p> + +<p>Our <a href="/ja/docs/Web/Media/Formats/Containers">media container formats guide</a> provides a list of the file types that are commonly supported by web browsers, including information about what their special use cases may be, any drawbacks they have, and compatibility information, along with other details.</p> + +<p>The <a href="/ja/docs/Web/Media/Formats/Audio_codecs">audio codec</a> and <a href="/ja/docs/Web/Media/Formats/Video_codecs">video codec</a> guides list the various codecs that web browsers often support, providing compatibility details along with technical information such as how many audio channels they support, what sort of compression is used, and what bit rates and so forth they're useful at. The <a href="/ja/docs/Web/Media/Formats/WebRTC_codecs">codecs used by WebRTC</a> guide expands upon this by specifically covering the codecs supported by the major web browsers, so you can choose the codecs that best cover the range of browsers you wish to support.</p> + +<p>As for MIME types of audio or video files, they typically specify the container format (file type). The optional <a href="/ja/docs/Web/Media/Formats/codecs_parameter">codecs parameter</a> can be added to the MIME type to further specify which codecs to use and what options were used to encode the media, such as codec profile, level, or other such information.</p> + +<p>The most commonly used MIME types used for web content are listed below. This isn't a complete list of all the types that may be available, however. See the <a href="/ja/docs/Web/Media/Formats/Containers">media container formats</a> guide for that.</p> + +<table class="standard-table"> + <thead> + <tr> + <th scope="col">MIME タイプ</th> + <th scope="col">音声または動画のタイプ</th> + </tr> + </thead> + <tbody> + <tr> + <td><code>audio/wave</code><br> + <code>audio/wav</code><br> + <code>audio/x-wav</code><br> + <code>audio/x-pn-wav</code></td> + <td>WAVE コンテナー形式の音声ファイル。 PCM オーディオコーデック (WAVE コーデック "1") はたいていサポートされていますが、他のコーデックのサポートは (あるとしても) 限定的です。</td> + </tr> + <tr> + <td><code>audio/webm</code></td> + <td>WebM コンテナー形式の音声ファイル。 Vorbis や Opus が WebM 仕様書で公式に対応しているコーデックです。</td> + </tr> + <tr> + <td><code>video/webm</code></td> + <td>WebM コンテナー形式の、おそらく音声も含む動画ファイル。VP8 や VP9 がもっとも一般的に使用される動画コーデックです。 Vorbis や Opus がもっとも一般的な音声コーデックです。</td> + </tr> + <tr> + <td><code>audio/ogg</code></td> + <td>Ogg コンテナー形式の音声ファイル。 Vorbis が、このコンテナーでもっとも一般的に使用される音声コーデックです。しかし、 Opus も同様に Ogg で対応しました。</td> + </tr> + <tr> + <td><code>video/ogg</code></td> + <td>Ogg コンテナー形式の、おそらく音声も含む動画ファイル。通常の動画コーデックは Theora、音声コーデックは Vorbis ですが、 Opus がもっと有名になってきています。</td> + </tr> + <tr> + <td><code>application/ogg</code></td> + <td>OGG コンテナー形式を使用する音声または動画のファイル。通常の動画コーデックは Theora、音声コーデックは Vorbis です。</td> + </tr> + </tbody> +</table> + +<h3 id="multipartform-data">multipart/form-data</h3> + +<p><code>multipart/form-data</code> タイプは、入力済みの <a href="/ja/docs/Web/Guide/HTML/Forms">HTML フォーム</a> の内容をブラウザーからサーバーに送信するときに使用することができます。</p> + +<p>これはマルチパート文書形式として複数の部分から成り、境界 (二重ダッシュ <code>--</code> で始まる文字列) によって区切られます。それぞれの部分は固有のエンティティであり、固有の HTTP ヘッダーとして {{HTTPHeader("Content-Disposition")}} やファイルアップロードのフィールドには {{HTTPHeader("Content-Type")}} を持ちます。</p> + +<pre class="syntaxbox notranslate">Content-Type: multipart/form-data; boundary=aBoundaryString +(マルチパート文書全体に関連付けられる、他のヘッダー) + +--aBoundaryString +Content-Disposition: form-data; name="myFile"; filename="img.jpg" +Content-Type: image/jpeg + +(データ) +--aBoundaryString +Content-Disposition: form-data; name="myField" + +(データ) +--aBoundaryString +(サブパート) +--aBoundaryString-- + +</pre> + +<p>以下の <code><form></code> があるとします。</p> + +<pre class="brush: html notranslate"><form action="http://localhost:8000/" method="post" enctype="multipart/form-data"> + <label>Name: <input name="myTextField" value="Test"></label> + <label><input type="checkbox" name="myCheckBox"> Check</label> + <label>Upload file: <input type="file" name="myFile" value="test.txt"></label> + <button>Send the file</button> +</form></pre> + +<p>これは以下のメッセージを送信します。</p> + +<pre class="notranslate">POST / HTTP/1.1 +Host: localhost:8000 +User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:50.0) Gecko/20100101 Firefox/50.0 +Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 +Accept-Language: en-US,en;q=0.5 +Accept-Encoding: gzip, deflate +Connection: keep-alive +Upgrade-Insecure-Requests: 1 +Content-Type: multipart/form-data; boundary=---------------------------8721656041911415653955004498 +Content-Length: 465 + +-----------------------------8721656041911415653955004498 +Content-Disposition: form-data; name="myTextField" + +Test +-----------------------------8721656041911415653955004498 +Content-Disposition: form-data; name="myCheckBox" + +on +-----------------------------8721656041911415653955004498 +Content-Disposition: form-data; name="myFile"; filename="test.txt" +Content-Type: text/plain + +Simple file. +-----------------------------8721656041911415653955004498-- + +</pre> + +<h3 id="multipartbyteranges">multipart/byteranges</h3> + +<p><code>multipart/byteranges</code> MIME タイプは、部分的なレスポンスをブラウザーへ返すために使用されます。</p> + +<p>{{HTTPStatus("206")}}<code> Partial Content</code> ステータスコードを送信するとき、この MIME タイプは文書がいくつかの部分で構成されていることを示しており、それぞれのリクエストされた範囲のひとつになります。ほかのマルチパート型と同様に、 {{HTTPHeader("Content-Type")}} で <code>boundary</code> を使用してそれぞれの部分を区切ります。それぞれの部分は実際のタイプを表す {{HTTPHeader("Content-Type")}} ヘッダーと、表現している範囲を表す {{HTTPHeader("Content-Range")}} ヘッダーを持ちます。</p> + +<pre class="notranslate"><code>HTTP/1.1 206 Partial Content +Accept-Ranges: bytes +Content-Type: multipart/byteranges; boundary=3d6b6a416f9b5 +Content-Length: 385 + +--3d6b6a416f9b5 +Content-Type: text/html +Content-Range: bytes 100-200/1270 + +eta http-equiv="Content-type" content="text/html; charset=utf-8" /> + <meta name="vieport" content +--3d6b6a416f9b5 +Content-Type: text/html +Content-Range: bytes 300-400/1270 + +-color: #f0f0f2; + margin: 0; + padding: 0; + font-family: "Open Sans", "Helvetica +--3d6b6a416f9b5--</code></pre> + +<h2 id="Importance_of_setting_the_correct_MIME_type" name="Importance_of_setting_the_correct_MIME_type">正しい MIME タイプを設定することの重要性</h2> + +<p>多くのウェブサーバーは未知の種類のリソースについて、既定の <code>application/octet-stream</code> MIME タイプを送ります。セキュリティ上の理由で、多くのブラウザーはこのようなリソースに既定のアクションを定義することを許可せず、リソースを使用するためにディスクへ保存することをユーザーに強制します。</p> + +<p>以下のような誤ったサーバー設定がよく見られます。</p> + +<ul> + <li> + <p>RAR で圧縮されたファイル。この場合、元ファイルの実際の種類であることが理想です。これは、 .RAR ファイルがさまざまな種類の複数のリソースを含むことができるため、たいていは不可能です。この場合、サーバーが <code>application/x-rar-compressed</code> を送信するように設定してください。</p> + </li> + <li> + <p>音声および動画。正しい MIME タイプを持つリソースだけが、 {{HTMLElement("video")}} または {{HTMLElement("audio")}} 要素で再生されます。<a href="/ja/docs/Web/Media/Formats">音声および動画に対して正しい MIME タイプを使用する</a>よう注意してください。</p> + </li> + <li> + <p>プロプライエタリーなファイルタイプ。特別な操作ができなくなるため、<code>application/octet-stream</code> の使用は避けてください。ほとんどのブラウザーは、この汎用的な MIME タイプに既定の動作 (「Word で開く」など) を定義することができません。 <code>application/vnd.mspowerpoint</code> のような特定の型ならば、ユーザーがそのようなファイルを自動的に選択したプレゼンテーションソフトウェアで開くことができます。</p> + </li> +</ul> + +<h2 id="MIME_sniffing" name="MIME_sniffing">MIME スニッフィング</h2> + +<p>MIME タイプが欠落している、あるいは MIME タイプが誤って設定されているとクライアントが考えている場合に、ブラウザーは MIME スニッフィングを行います。これは、リソースを確認して正しい MIME タイプを推測します。</p> + +<p>MIME スニッフィングはブラウザーによって異なる方法で、異なる状況下で行います。 (例えば、 Safari は受信した MIME タイプが合わない場合は、 URL のファイルの拡張子を見ます。) 実行可能なコンテンツを表す MIME タイプの一部には、セキュリティ上の懸念があります。サーバーは {{HTTPHeader("X-Content-Type-Options")}} を送信することで、MIME スニッフィングを抑制できます。</p> + +<h2 id="Other_methods_of_conveying_document_type" name="Other_methods_of_conveying_document_type">文書形式を伝える他の方法</h2> + +<p>MIME タイプは、文書の種類の情報を伝える唯一の方法ではありません。</p> + +<ul> + <li>特に Microsoft Windows では、ファイル名の拡張子を使用することがあります。拡張子に意味があるとは考えないオペレーティングシステムもありますし (Linux や Mac OS など)、正しいという保証はありません。</li> + <li>マジックナンバー。バイト構造を見ることで、様々な形式の構文によりファイルタイプを推測することができます。例えば GIF ファイルは16進数の値 <code>47 49 46 38 39</code> (<code>GIF89</code>)、 PNG ファイルは <code>89 50 4E 47</code> (<code>.PNG</code>) で始まります。マジックナンバーを持たない種類のファイルもありますので、100%信頼できるシステムではありません。</li> +</ul> + +<h2 id="See_also" name="See_also">関連情報</h2> + +<ul> + <li><a href="/ja/docs/Web/Media">ウェブメディア技術</a></li> + <li><a href="/ja/docs/Web/Media/Formats">ウェブ上で使用されるメディア形式のガイド</a></li> + <li><a href="/ja/docs/Web/Security/Securing_your_site/Configuring_server_MIME_types">サーバーの MIME タイプの正しい構成</a></li> +</ul> diff --git a/files/ja/web/http/basics_of_http/resource_urls/index.html b/files/ja/web/http/basics_of_http/resource_urls/index.html new file mode 100644 index 0000000000..1161f32c54 --- /dev/null +++ b/files/ja/web/http/basics_of_http/resource_urls/index.html @@ -0,0 +1,73 @@ +--- +title: リソース URL +slug: Web/HTTP/Basics_of_HTTP/Resource_URLs +tags: + - Guide + - HTTP + - Intermediate + - Resource +translation_of: Web/HTTP/Basics_of_HTTP/Resource_URLs +--- +<p>{{HTTPSidebar}}{{non-standard_header}}</p> + +<p><code>resource:</code> というスキームのプレフィックスが付いたリソース URL は、Firefox と Firefox のブラウザ拡張機能によってリソースを内部的に読み込むために使用されますが、情報の一部はブラウザが接続するサイトでも利用できます。</p> + +<h2 id="Syntax" name="Syntax">構文</h2> + +<p>リソースURLは、接頭辞 (<code>resource:</code>) とロードするリソースを指す URL の2つの部分で構成されます。</p> + +<pre class="syntaxbox">resource://<url></pre> + +<p>例</p> + +<pre>resource://gre/res/svg.css</pre> + +<p>リソース URL ('->') に矢印がある場合は、最初のファイルが次のファイルにロードされたことを意味します。</p> + +<pre>resource://<File-loader> -> <File-loaded></pre> + +<p>より一般的な詳細については、<a href="/ja/docs/Web/HTTP/Basics_of_HTTP/Identifying_resources_on_the_Web">ウェブ上のリソースの識別</a>を参照してください。</p> + +<p>この記事では、組み込みのリソースを指すために Firefox が内部的に使用するリソース URI に焦点を当てます。</p> + +<h2 id="Threats" name="Threats">脅威</h2> + +<p><code>resource:</code> URL によって共有される情報の一部はウェブサイトで利用できるため、ウェブページは内部スクリプトを実行し、デフォルトの設定を含む Firefox の内部リソースを調べることができます。</p> + +<p>たとえば、<a href="https://www.browserleaks.com/firefox">Browserleaks のスクリプト</a>は、サイトで実行されている簡単なスクリプトでクエリが実行されたときに Firefox が表示する内容を強調表示します (コードは <a href="https://browserleaks.com/firefox#more">https://browserleaks.com/firefox#more</a> にあります)。</p> + +<p>ファイル firefox.js は、プリファレンス名と値を pref() 関数に渡します。 例えば、</p> + +<pre><a href="http://searchfox.org/mozilla-central/rev/48ea452803907f2575d81021e8678634e8067fc2/browser/app/profile/firefox.js#575">http://searchfox.org/mozilla-central/rev/48ea452803907f2575d81021e8678634e8067fc2/browser/app/profile/firefox.js#575</a></pre> + +<p>ウェブサイトではこの <code>pref()</code> 関数をオーバーライドし、スクリプト<code>resource:///defaults/preferences/firefox.js</code> を使用して、 Firefox のデフォルト設定を簡単に収集できます。</p> + +<p>さらに、プラットフォームやロケールなどのビルド構成によっては、ウェブサイトがこの情報を使用して個々のユーザーを識別できるという意味で、いくつかのデフォルト設定値が異なります。</p> + +<h2 id="Solution" name="Solution">解決方法</h2> + +<p>この問題を解決するために、 Mozilla は {{bug(863246)}} のリソースを読み込む動作を変更しました。これは <a href="/ja/docs/Mozilla/Firefox/Releases/57">Firefox 57 (Quantum)</a> で登場しました。</p> + +<p>過去には、ウェブコンテンツは、 Firefox の内部リソースだけでなく、拡張機能の資産も含め、URIが必要とするあらゆるリソースにアクセスすることができました。 現在、この動作はデフォルトでは禁止されています。</p> + +<p>しかし、特定の状況下で Firefox がウェブコンテンツにリソースを読み込む必要があります。 たとえば、ビュー・ソース・ページ (ビュー・ソースまたはビュー選択ソース) を開くと、 <code>resource:</code> URI を介して <code>viewsource.css</code> が必要です。ウェブコンテンツに公開する必要があるリソースは、 <code>resource://content-accessible/</code>という名前の新しい場所に移動されました。これは隔離されており、重要ではないリソースのみが含まれています。 このようにして、重要なリソースを公開し、ほとんどの脅威を排除できます。</p> + +<div class="note"> +<p><strong>メモ</strong>: ウェブと拡張機能の開発者がリソース URL をもう使用しようとしないことをお勧めします。彼らの使い方はうまくいきませんでした。そしてほとんどの使用法はこれ以上動作しません。</p> +</div> + +<h2 id="Specifications" name="Specifications">仕様</h2> + +<p>resource: はどの仕様書にも定義されていません。</p> + +<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの対応</h2> + +<p>resource: は Firefox のみ対応</p> + +<h2 id="See_also" name="See_also">関連情報</h2> + +<ul> + <li><a href="/ja/docs/Web/HTTP/Basics_of_HTTP/Identifying_resources_on_the_Web">ウェブ上のリソースの識別</a></li> + <li><a href="/ja/docs/Learn/Common_questions/What_is_a_URL">URL とは何か</a></li> + <li><a href="https://www.iana.org/assignments/uri-schemes/uri-schemes.xhtml">IANA list of URI schemes</a> (<code>resource:</code> is <a href="https://www.iana.org/assignments/uri-schemes/prov/resource">covered here</a>)</li> +</ul> |