The If-None-Match request header is used with a method to make it conditional. As specified in [RFC2616], "The purpose of this feature is to allow efficient updates of cached information with a minimum amount of transaction overhead. It is also used to prevent a method (for example, PUT) from inadvertently modifying an existing resource when the client believes that the resource does not exist."
The If-None-Match header is used in this document as specified in [RFC2616]. However, this document further limits it to the types of requests with which the header can be used. Additional constraints are also added to the syntax of the header value.
This header MAY<55> be present only on HTTP GET, MERGE, PATCH, or PUT requests to request URIs that identify the same Entity Data Model (EDM) constructs as URI 2, URI 3, URI 4, URI 5, and URI 17, as defined in the Resource Path Semantics table in Resource Path: Semantics (section 22.214.171.124). Additionally, this header MAY<56> be used on DELETE requests to URIs which identify the same EDM constructs as URI 2, as specified in the table in Resource Path: Semantics (section 126.96.36.199), and any data service URI whose last path segment is "/$value". This header MUST NOT be used on any POST requests to a data service.
Client processing rules for this header are defined in Request Types (section 2.2.7) and server processing rules are in Message Processing Events and Sequencing Rules (section 3.2.5).
The syntax of the If-None-Match header is defined as follows:
; entity-tag is as per the definition in (section 188.8.131.52) If-None-Match = "If-None-Match" ":" ( "*" / 1*entity-tag ) CRLF