From RFC 7231 "Hypertext Transfer Protocol (HTTP/1.1): Semantics and Content" Section 4.2.2 "Idempotent Methods":
A request method is considered "idempotent" if the intended effect on the server of multiple identical requests with that method is the same as the effect for a single such request. Of the request methods defined by this specification, PUT, DELETE, and safe request methods are idempotent.
However, the term "identical" is defined in neither RFC.
It seems reasonable to assume that two requests that are literally identical, byte for byte, in all content (including headers and body) would be identical for this purpose.
It also seems clear that extrinsic properties of the request, such as the time it was sent (as long as it is not represented in the request), would be irrelevant to the "identical" disposition of the request. Otherwise idempotence would be a meaningless distinction.
However, are there any possible differences whatsoever between two requests, even for example differences in a single particular header, for any of the idempotent HTTP methods, that could nonetheless still constitute identical requests for the purpose of idempotence?
It seems to me that RFC 7231 or RFC 2616 alone do not answer this question directly, but I wonder if there is an RFC, specification, or otherwise generally authoritative source that does specify the answer to this question.
Or if a widely used dependent system (such as a highly utilized HTTP client or server) documents its expectations around "identical" for the purposes of idempotence, that would be fairly helpful as well.