"X-" deprecated for HTTP headers
tools.ietf.org
tools.ietf.org
> In some situations, segregating the parameter name space used in a given application protocol can be justified:
> 1. When it is extremely unlikely that some parameters will ever be standardized. In this case, implementation-specific and private- use parameters could at least incorporate the organization's name (e.g., "ExampleInc-foo" or, consistent with [RFC4288], "VND.ExampleInc.foo") or primary domain name (e.g., "com.example.foo" or a Uniform Resource Identifier [RFC3986] such as "http://example.com/foo). In rare cases, truly experimental parameters could be given meaningless names such as nonsense words, the output of a hash function, or Universally Unique Identifiers (UUIDs) [RFC4122].
X-Subliminal:You want to buy as many games as you can afford
I agree the X- prefix ain't great. Is there an alternative for the originating IP address? If not, we need one.
> 1. Deprecates the "X-" convention for newly defined parameters (emphasis mine)
> 4. Makes no recommendation as to whether existing "X-" parameters ought to remain in use or be migrated to a format without the "X-"; this is a matter for the creators or maintainers of those parameters.
In practice, I expect X-Forwarded-For to live long and prosper for many years even if a X-less version standardizes.
Next, please convince browser vendors to support HTTP methods (PUT, DELETE, etc.) in forms.
<form action="/Session" method="post">
<input name="X-HTTP-Method-Override" type="hidden" value="DELETE" />
<input type="submit" value="Log off" />
</form>How would you handle the case of pre-standard implementations?
Like:
-webkit-gradient(<type>, <point> [, <radius>]?, <point> [, <radius>]? [, <stop>]*)
vs: -moz-linear-gradient([ [ [top | bottom] || [left | right] ],]? <color-stop>[, <color-stop>]+);
which eventually became: linear-gradient( [ [ <angle> | to <side-or-corner> ,]? <color-stop> [, <color-stop>]+ )
In CSS, the vendor prefixes are exactly what we need. They help bootstrapping, discussing, and proofing standards by having pre-standard implementations in the wild.CSS is vastly more complex than HTTP headers which are most of the time, key-value(s).
http://www.quirksmode.org/blog/archives/2010/03/css_vendor_pref.html
And here's some further discussion: http://www.quirksmode.org/blog/archives/2010/03/css_vendor_pref_1.html
Personally I think vendor prefixes are an awful hack. We've already got browser-conditional comments in HTML, why not use them? Hell, browser-specific stylesheets would be a better option from where I'm sitting.You mean the `conditional statements` introduced and only used by IE?
Edited to clarify: I mean that browser-conditional comments should be implemented across browsers, not that we should rely on features already implemented.
What we need is draft prefixes. WebKit implements one type of gradient? Great, they define a prefix/property (which could be something as simple/silly as -webkit1-gradient), and anyone who implements the same API is free to use the same property name.
Also, this statement, "the name space is not limited or constrained in any way, so there is no need to assign a block of names for private use or experimental purposes", this is true only for application/browser vendors (native devs), web devs are stuck with X- headers for sending custom data to the browser without interrupting page output.
X-Ua-Compatible: IE=Edge,chrome=1
X-Request-Id: 19c0a05fd28e371127a76f658203eace
X-Runtime: 0.002039
X-Content-Digest: 2c4b5e9fc815a69ecb514e41e27e6ac7f2716801
X-Rack-Cache: miss, store
X-Varnish: 1299462197
X-Cache: Hit from cloudfront
X-Amz-Cf-Id: kDpGVcaIcDVQm-PkMd_FPnR_IcPZqPgR0NxKEvmOBWKaURpeus5vEw==,_ycCBrLJT91EOYt14GTciFKKLlpzLt1cogvPpK2PkDP7QzYVGbcsGQ==
The primary problem with the "X-" convention is that unstandardized
parameters have a tendency to leak into the protected space of
standardized parameters, thus introducing the need for migration from
the "X-" name to a standardized name. Migration, in turn, introduces
interoperability issues (and sometimes security issues) because older
implementations will support only the "X-" name and newer
implementations might support only the standardized name. To
preserve interoperability, newer implementations simply support the
"X-" name forever, which means that the unstandardized name has
become a de facto standard (thus obviating the need for segregation
of the name space into standardized and unstandardized areas in the
first place).
Most of your examples are covered under the "exception 1" clause, also in Appendix B: In some situations, segregating the parameter name space used in a
given application protocol can be justified:
1. When it is extremely unlikely that some parameters will ever be
standardized...
2. When parameter names might have significant meaning...
3. When parameter names need to be very short (e.g., as in [RFC5646]
for language tags)... <?php
header('Comment: some context on why this reply happened');
?>Windows is a Microsoft product.
This would make IP discovery easy peasy!
We need ways to move forward or e ven sideways if thats what we choose using an extension mechanism that is simple.