[whatwg] Comments on XMLHttpRequest specification
Darin Fisher
darin at meer.net
Mon Apr 18 18:55:05 PDT 2005
I've been meaning to comment on the XMLHttpRequest specification, and in
particular the specification of setRequestHeader.
I'm basing my comments on:
http://www.whatwg.org/specs/web-apps/current-work/#scripted-http
In the section on setRequestHeader:
"UAs must set the Authorization header according to the values passed
to the open()
<http://www.whatwg.org/specs/web-apps/current-work/#openmethod> method
(but must allow calls to setRequestHeader()
<http://www.whatwg.org/specs/web-apps/current-work/#setrequestheader> to
append values to it)."
This specification does not indicate how the Authorization header is to
be constructed. Is the implementation to assume a Basic auth
challenge? That does not sound very useful to me. Instead, useragents
should send requests as usual and respond to challenges by attempting to
use the supplied username and password, resorting to prompting the user
only if required. Also, UAs may set the Authorization header ahead of
time if they know from past experience that the specified URL has a
reusable challenge (i.e., a Basic auth challenge). This process is all
described in RFC 2617.
Other comments:
UAs may also set the Accept-Language header based on knowledge of the
user's preferred language.
Hmm... are you sure you want to specify that Range headers may not be
set? What implementation doesn't allow them? Mozilla will only insert
its own Range headers when it can determine that the response can be
partially satisfied from its cache. If Range headers are already
present in the request, then it will simply issue the requested range
request and not try to update its cache based on it. (That's a bunch of
mozilla implementation details, sorry.)
The Keep-Alive header is a HTTP/1.0 defacto standards thingy. It's not
specified by HTTP/1.1. Are you sure you want to require it?
The statement,
"User agents must not set any headers other than the headers set by
the author using this method, with the following exceptions:"
seems very difficult to support. What about other random headers that
the networking subsystem might introduce? What about future versions of
HTTP? I can imagine that some extension to the networking system may
introduce extra headers on all outgoing HTTP requests to work properly
with some third-party gateway or proxy server. In short, it seems a bit
wrong to restrict what can be set by the transport layer. Certainly, in
a proxy configuration a great variety of hop-by-hop headers might be
added to the request (specified as hop-by-hop by listing them as values
on the Connection header). Those headers would be stripped by the proxy
server before sending them onto the origin server, so the web author
would arguably not care about those headers.
Basically, I think it's important to not over-specify setRequestHeader
to the point where useful things become verboten. But, on the flip side
I understand that you want to make it clear how the HTTP layer is to
interact with user set request headers.
Despite these nit-picks, I'm really happy to see XMLHttpRequest being
specified. Keep up the good work! :-)
-Darin
More information about the whatwg
mailing list