[41] If:
ヘッダーは、状態トークンと実体タグによって要求の適用条件を指定するものです。
[10] If:
ヘッダーは、
トークンと実体タグが特定の資源と一致するかどうかの条件の状態リストを指定して要求を条件付きとするために使うことができます >>8。
[11] If:
ヘッダーは、
状態トークンを指定して、クライアントが状態トークンについての知識を有することを示すためにも使うことができます >>8。
状態トークンを If:
に指定することを提出といいます >>1, >>8。
[12] >>10 と >>11 は同じヘッダーに記述されますが、別々に処理されます。 状態トークンが提出されたとみなすかどうかと、 状態トークンが含まれる状態リストを鯖が実際に評価したか否かや、 含まれる条件が真に評価されるか否かは、独立しています >>8。
[15] If:
ヘッダーの値は、
1つ以上のタグ無しリストの OWS 区切りのリスト、
または1つ以上のタグ付きリストの OWS 区切りのリストです >>8。
[24] If:
ヘッダーは、含まれるタグ付きリストやタグ無しリストのいずれかが真と評価されるなら全体として真であり、
すべてが偽と評価されるなら全体として偽となります >>8。
[16] タグ無しリストは、1つ以上の条件を (
と )
で括ったものです
>>8。条件の前後には OWS を挿入できるようです。
[17] タグ付きリストは、1つ以上のタグ無しリストの前に資源タグを置いたものです >>8。
資源タグの後やリスト間には OWS を挿入できるようです。
資源タグは、単純参照を <
と >
で括ったものです >>8。
[20] タグ付きリストは、リストが資源タグの URL についてのものであることを表しています。 タグ無しリストは、リストが要求URLについてのものであることを表しています。 >>8
[22] タグ付きリスト内の各リストやタグ無しリストは、 含まれる条件がすべて真であるなら全体として真で、 偽のものがあるなら全体として偽となります >>8。
[23] タグ付きリストは、含まれるリストのいずれかが真であるなら全体として真で、 すべて偽であるなら全体として偽となります >>8。
[18] 条件は、状態トークンか実体タグか、それらの前に
Not
を置いたものです。
状態トークンは絶対URLを <
と >
で括ったものです。
実体タグは [
と ]
で括ります。
Not
は大文字・小文字不区別です。 >>8
Not
の前後には OWS を挿入できるようです。
[34] 任意の要求が If:
ヘッダーを含めることができます >>33。
[6] 変更される資源が複数ある場合は、関係するすべてのロックのロックトークンを提出しなければなりません >>5。
[4] 変更しようとする資源がコレクションのメンバーとして間接的にロックされている時は、 (直接のロックとは別に) コレクションのロックトークンも指定する必要があります >>3。
[39] ロックを更新するために LOCK
要求に
If:
ヘッダーを指定することができます。その場合、
ロックトークンは1つだけ指定しなければなりません。 >>38, >>37
[29] WebDAV に対応しない串は If:
を扱えないでしょうから、
HTTP/1.1 串への要求には Cache-Control: no-cache
を、
HTTP/1.0 串への要求には Pragma: no-cache
を含めなければなりません >>8。
一般に WebDAV に対応していない串を判定する信頼できる方法はありませんから、
常に指定するのが良い >>8 とされています。
[14] If:
ヘッダーが偽と評価された場合には、
412
応答を返して失敗としなければなりません >>8, >>33。
そうでない場合には、 If:
ヘッダーが無かった場合のように処理を続行できます >>8。
[25] 実体タグは、指定された資源の実体タグと (強い比較または弱い比較で) 一致するかどうかを評価します >>8。
[26] 状態トークンは、指定された資源に関する状態トークンと完全一致で比較します。 ロックトークンの場合には、資源がロックの適用範囲内にあれば一致とします。 >>8
[27] なお指定された資源が写像されていない URL の場合には、 実体タグも状態トークンも一致しないものとします >>8。
[13] 関係するすべてのロックのロックトークンが指定されなかった場合は、 変更操作が失敗しなければなりません。 >>5
[40] LOCK
要求に If:
が指定された場合で対象資源がその範囲内にない場合には、
412
応答を返すことができます。
応答には事前条件符号 lock-token-matches-request-uri
を指定できます。 >>37
If: (<urn:uuid:181d4fae-7d8c-11d0-a765-00a0c91e6bf2>
["I am an ETag"])
(["I am another ETag"])
... は、... のいずれかであることを求めています >>8。If: (Not <urn:uuid:181d4fae-7d8c-11d0-a765-00a0c91e6bf2> <urn:uuid:58f202ac-22cf-11d1-b12d-002035b29092>)... は、1つ目の URL のロックの対象ではなく、かつ 2つ目の URL のロックの対象であることを求めています >>8。
If: (<urn:uuid:181d4fae-7d8c-11d0-a765-00a0c91e6bf2>) (Not <DAV:no-lock>)... は、
DAV:no-lock
がロックトークンとして使われることのない URL
であり、その否定形は常に真となるため、ヘッダー全体として常に真に評価されます。
ロックがタイムアウトで無効となっても失敗せずに処理を続けさせたい場合にこのような指定が有用です。 >>8[9] If-Match:
ヘッダーと似ていますが、
If:
ヘッダーには実体タグの他に状態トークンも指定できる点が違っています。
[42] サポート切れの「IIS 6」でリモートから任意のコードが実行できるという脆弱性が発見される | スラド セキュリティ () <https://security.srad.jp/story/17/04/05/0637251/>