1. 2.5 URL
      1. 2.5.1 用語
      2. 2.5.2 CORS設定属性
      3. 2.5.3 リファラーポリシー属性
      4. 2.5.4 Nonce属性
      5. 2.5.5 遅延読み込み属性

2.5 URL

2.5.1 用語

妥当なURL文字列だが空文字列でない場合、文字列は妥当な空でないURLである。

先頭と末尾のASCII空白文字を取り除いたあとに妥当なURL文字列である場合、文字列は潜在的にスペースで囲まれた妥当なURLである。

先頭と末尾のASCII空白文字を取り除いたあとに、妥当な空でないURLである場合、文字列は潜在的にスペースで囲まれた妥当な空でないURLである。

この仕様は、たとえ解決不可能でも、XMLツールの互換性のために必要な場合、HTML文書DOCTYPEで用いるためのabout: URL予約としてURL about:legacy-compatを定義する。[ABOUT]

この仕様は、たとえ解決不可能でも、メディアトラック類のための識別子として用いられるabout: URLを予約としてURL about:html-kindを定義する。[ABOUT]

この仕様は、たとえ解決不可能でも、iframe srcdoc文書URLとして用いられるabout: URLを予約としてURL about:srcdocを定義する。[ABOUT]

Documentオブジェクトdocumentフォールバック基底URLは、次の手順を実行して得られるURLレコードである:

  1. Documentiframe srcdoc文書である場合、documentブラウジングコンテキストがもつコンテナ文書に属する文書基底URLを返す。

  2. documentURLabout:blankであり、かつdocumentブラウジングコンテキストクリエイター基底URLが非nullである場合、クリエイター基底URLを返す。

  3. documentURLを返す。

Documentオブジェクトの文書基底URLは、次の手順を実行して得られる絶対URLである:

  1. Documenthref属性を持つbase要素が存在しない場合、Documentフォールバック基底URLを返す。

  2. そうでなければ、ツリー順で、href属性を持つDocumentで最初のbase要素の凍結基底URLを返す。

2.5.2 CORS設定属性

Attributes/crossorigin

Support in all current engines.

FirefoxYesSafariYesChromeYes
OperaYesEdgeYes
Edge (Legacy)12+Internet ExplorerYes
Firefox AndroidYesSafari iOSYesChrome AndroidYesWebView AndroidYesSamsung InternetYesOpera AndroidYes

CORS設定属性は、列挙属性である。次の表は、属性に対するキーワードと状態の一覧である。キーワードとともにその行の最初のセルに与えられた状態は、これらキーワードが対応する状態を与える。

状態キーワード概要
Anonymousanonymous要素に対するリクエストは、"cors"に設定されるリクエストのモードおよび"same-origin"に設定されるリクエストの認証情報モードを持つ。
(空文字列)
Use Credentialsuse-credentials要素に対するリクエストは、"cors"に設定されるリクエストのモードおよび"include"に設定されるリクエストの認証情報モードを持つ。

属性の不正値のデフォルトAnonymous状態であり、欠損値のデフォルトNo CORS状態である。反映の目的のため、Anonymous状態の正規キーワードanonymousキーワードである。

CORS設定属性によって管理されるフェッチの大部分は、潜在的なCORS要求アルゴリズムの作成によって行われる。

For more modern features, where the request's mode is always "cors", certain CORS settings attributes have been repurposed to have a slightly different meaning, wherein they only impact the request's credentials mode. To perform this translation, we define the CORS settings attribute credentials mode for a given CORS settings attribute to be determined by switching on the attribute's state:

No CORS
Anonymous
"same-origin"
Use Credentials
"include"

2.5.3 リファラーポリシー属性

リファラポリシー属性は、列挙属性である。空文字列を含む各リファラーポリシーは、同じ名前の状態にマッピングする、この属性のためのキーワードである。

属性の不正値のデフォルトおよび欠損値のデフォルトの両方は、空文字列状態である。

様々なフェッチの処理モデルにこの状態の影響は、Fetch、およびReferrer Policyで、この仕様を通してより詳細に定義される。[FETCH] [REFERRERPOLICY]

複数の信号は、どの処理モデルが与えられるフェッチに使用されるかに寄与することができる。リファラポリシー属性はそのうちの一つである。一般に、この信号が処理される順序は次のとおり:

  1. まず、noreferrerリンクタイプの存在

  2. 次に、リファラーポリシー属性の値

  3. それからreferrerに設定されるnameをもつ任意のmeta要素の存在

  4. 最後に、`Referrer-Policy` HTTPヘッダー。

2.5.4 Nonce属性

HTMLOrForeignElement/nonce

Support in all current engines.

Firefox75+Safari10+Chrome61+
OperaYesEdge79+
Edge (Legacy)NoInternet ExplorerNo
Firefox AndroidNoSafari iOS10+Chrome Android61+WebView Android61+Samsung Internet8.0+Opera AndroidYes

nonceコンテンツ属性は、与えられたフェッチが処理されてもよいどうかを判断するためにContent Security Policyで使用することができる暗号ノンス("一度使用される数字")を表す。値はテキストである。[CSP]

nonceコンテンツ属性を持つ要素は、コンテンツ属性から値を抽出し、その値を[[CryptographicNonce]]という名前の内部スロットに移動し、HTMLOrSVGElementインターフェイスミックスインを介してスクリプトに公開し、コンテンツ属性を空の文字列に設定することで、暗号nonceがスクリプト(かつCSS属性セレクターなどのサイドチャネルではない)にのみ公開されることを保証する。特に指定しない限り、スロットの値は空の文字列である。

element . nonce

要素の[[CryptographicNonce]]内部スロットの値を返す。

そのスロットの値を更新するために設定することができる。

取得時に、nonce IDL属性は、この要素の[[CryptographicNonce]]の値を返さなければならない。この要素の[[CryptographicNonce]]を指定された値に設定する。

nonce IDL属性のセッターが対応するcontent属性を更新しないことに注意されたい。これは、要素がブラウジングコンテキストに接続されたときに以下のnonceコンテンツ属性を空の文字列に設定するのと同様に、セレクターなどのコンテンツ属性をより簡単に読み取ることができるメカニズムによるnonce値の流出を防ぐことを意味する。この動作が導入されたissue #2369で詳細を確認されたい。

The following attribute change steps are used for the nonce content attribute:

  1. If element does not include HTMLOrSVGElement, then return.

  2. If localName is not nonce or namespace is not null, then return.

  3. If value is null, then set element's [[CryptographicNonce]] to the empty string.

  4. Otherwise, set element's [[CryptographicNonce]] to value.

Whenever an element including HTMLOrSVGElement becomes browsing-context connected, the user agent must execute the following steps on the element:

  1. Let CSP list be element's shadow-including root's CSP list.

  2. If CSP list contains a header-delivered Content Security Policy, and element has a nonce content attribute attr whose value is not the empty string, then:

    1. Let nonce be element's [[CryptographicNonce]].

    2. Set an attribute value for element using "nonce" and the empty string.

    3. Set element's [[CryptographicNonce]] to nonce.

    If element's [[CryptographicNonce]] were not restored it would be the empty string at this point.

As each Document's CSP list is append-only, user agents can optimize away the contains a header-delivered Content Security Policy check by, for example, holding a flag on the Document, set during Document creation and initialization.

The cloning steps for elements that include HTMLOrSVGElement must set the [[CryptographicNonce]] slot on the copy to the value of the slot on the element being cloned.

2.5.5 遅延読み込み属性

Lazy_loading

Firefox75+SafariNoChrome76+
Opera63+Edge79+
Edge (Legacy)NoInternet ExplorerNo
Firefox AndroidNoSafari iOSNoChrome Android76+WebView AndroidNoSamsung InternetNoOpera Android54+
caniuse.com table

遅延読み込み属性列挙属性である。次の表は、キーワードと属性の状態を示す。1列目のキーワードは、キーワードと同じ行で2列目のセル内の状態に対応づける。

この属性は、属性の現在の状態に応じて、すぐにリソースをフェッチする、または要素に関連付けられた条件が満たされるまでフェッチを延期するようユーザーエージェントに指示する。

キーワード状態説明
lazyLazyいくつかの条件が満たされるまでリソースのフェッチを延期するために使用される。
eagerEagerリソースをすぐにフェッチするために使用される。デフォルト状態。

属性の欠損値のデフォルト無効値のデフォルトは両方ともEager状態である。


The will lazy load element steps, given an element element, are as follows:

  1. If scripting is disabled for element, then return false.

    This is an anti-tracking measure, because if a user agent supported lazy loading when scripting is disabled, it would still be possible for a site to track a user's approximate scroll position throughout a session, by strategically placing images in a page's markup such that a server can track how many images are requested and when.

  2. If element's lazy loading attribute is in the Lazy state, then return true.

  3. Return false.

Each img and iframe element has associated lazy load resumption steps, initially null.

For img and iframe elements that will lazy load, these steps are run from the lazy load intersection observer's callback or when their lazy loading attribute is set to the Eager state. This causes the element to continue loading.

Each Document has a lazy load intersection observer, initially set to null but can be set to an IntersectionObserver instance.

To start intersection-observing a lazy loading element element, run these steps:

  1. Let doc be element's node document.

  2. If doc's lazy load intersection observer is null, set it to a new IntersectionObserver instance, initialized as follows:

    The intention is to use the original value of the IntersectionObserver constructor. However, we're forced to use the JavaScript-exposed constructor in this specification, until Intersection Observer exposes low-level hooks for use in specifications. See bug w3c/IntersectionObserver#427 which tracks this. [INTERSECTIONOBSERVER]

  3. Call doc's lazy load intersection observer's observe method with element as the argument.

    The intention is to use the original value of the observe method. See w3c/IntersectionObserver#427. [INTERSECTIONOBSERVER]

To stop intersection-observing a lazy loading element element, run these steps:

  1. Let doc be element's node document.

  2. Assert: doc's lazy load intersection observer is not null.

  3. Call doc's lazy load intersection observer unobserve method with element as the argument.

    The intention is to use the original value of the unobserve method. See w3c/IntersectionObserver#427. [INTERSECTIONOBSERVER]