On Fri, 21 Apr 2006 18:29:06 +0200, Mark Nottingham <[EMAIL PROTECTED]> wrote:
See section 7.2.1; something like

"XHR operates across entity bodies, as defined by [RFC2616, section 7.2.1]; that is, transfer-encodings are applied to request bodies submitted to send(), as well as response bodes made available."

I used "entity body" for responseText like:

<p>If the <code><term>readyState</term></code> attribute has a value other than 3 (Receiving) or 4 (Loaded), it MUST be the empty string. Otherwise,
    it MUST be the fragment of the entity body received so far (when
<code><term>readyState</term></code> is 3 (Receiving)) or the entity body
    (when <code><term>readyState</term></code> is 4 (Loaded)), interpreted
    using the character encoding specified in the response, or UTF-8 if no
    character encoding was specified. Invalid bytes MUST be converted to
    U+FFFD REPLACEMENT CHARACTER.</p>

I made the reference to RFC 2616 in a separate definition section.


Ack. BTW, the issues list isn't obviously linked from the WG's home page.

It's right under Documents at http://www.w3.org/2006/webapi/ (first hit for "issue") or did you mean the Member home page?


WRT URIs, what should happen when I pass it a URI with a fragment identifier?

Do you perhaps know what implementations do?

I can't imagine that they'd do much, but I'll test and report back. Assuming they don't, it might be good to say something to the effect that fragment identifiers either
   a) aren't allowed
   b) might not be supported

Please e-mail your findings in a separate e-mail. Based on the results we should probably be able to come up with some reasonable requirements on UAs and authors...


When talking about redirects, it would be really nice to remind implementers (probably non-normatively) that HTTP has requirements about method preservation and getting approval for the user for the various codes; see http://www.mnot.net/javascript/xmlhttprequest/

Suggestions for text? I also wonder what kind of implications it would have for implementations given that currently most seem to ignore it.

"Implementers should note that HTTP places requirements on implementations regarding the preservation of the request method during redirects, and also requires users to be notified of certain kinds of automatic redirections."

<p>If the response is an HTTP redirect (status code 301, 302, 303 or 307),
   then it MUST be transparently followed (unless it violates security or
   infinite loop precautions). Note that HTTP [RFC2616] places requirements
on UAs regarding the preservation of the request method during redirects,
   and also requires users to be notified of certain kinds of automatic
   redirections. Any other error (including a 401) MUST cause the object to


WRT how it affects implementers, I think that's a question of whether the WG intends to test the requirements it inherits from HTTP (and other specs) during the CR phase.

Guess so.


Content-coding is a property of the content (entity, representation, whatever) itself -- just like content-type and content-language -- and automatically handling it breaks layering (which is OK, as long as you do it explicitly). This means that if decoding is handled automagically, the appropriate part of the Content-Encoding header should probably be stripped, so the app doesn't get confused.

What do you mean?

In HTTP, Content-* headers are entity headers -- they describe properties of the content explicitly. As such, they're not transparently handled by the implementations; if I send an entity and it's got a gzip encoding, I expect the guy on the other side to get a gzip encoding as well.

All that said, many people find it convenient for the implementation to handle content-encoding automatically.

I think the implication of this is that *if* the WG decides that content-encoding can be handled by the implementation automatically, there should be some control offered to the user over whether or not it happens.

The real trick for the WG might be in deciding what the default of that control is.

Thanks, this makes it more clear. Are you willing to raise another issue or should I do it? If you have more fancy tests available by the way for this, they are welcome :-) The default probably has to be based on what currently works.


[...]
"Otherwise, the nominated request header field value MUST be set to value. If the nominated request header field already has a value, the new value SHOULD be combined with the existing value, as specified by [RFC2616 Section 4.2]. Implementations MAY replace an existing value (instead of combining it with the new value) if the nominated request header field value is not specified as a comma-separated list."

Use this text, thanks!


Say something to the effect that if the UA has a cache, it MUST honour Cache-Control request headers sent with setRequestHeader(). This allows the application to control the cache.

So we need more text besides "In particular, UAs MUST NOT automatically set the <code>Cache-Control</code> or <code>Pragma</code> headers to defeat caching [RFC2616]."?

Yes. Something like "UAs that implement a cache should honour request cache-control headers." Note the lower-case SHOULD; HTTP already requires them to be honoured.

Based on my testing, implementations don't do this today. It would be very good if they do; as it is, developers don't have any control of the local cache.

Perhaps we can cover this in the testsuite?


[...]
The text reads as if persistent connection support is required, when HTTP does not require it. It also normatively re-states the requirements of HTTP, which isn't good specification practice.

Well, another way to set these headers is letting the author do it. So I can see why there's a requirement on UAs here from that perspective...


It should just be:

"UAs MUST NOT allow the Connection, Keep-Alive and Content-Length headers to be overridden."

Using the same logic, the requirement about the Host header should be

"UAs MUST NOT allow the Host header to be overridden."

"set" should probably be "use", and Content-Length should be in there too. In fact, I'd require UAs to set Content-Length; while theoretically you can chunk a request body, there are some practical interop problems with doing so.

Could you elaborate on that?

Not applicable any more -- see above.

[...]


What about automatically setting headers to do with delta encoding (RFC3229)? TE (for transfer encoding negotiation)? Content-MD5 (for request body integrity)? Meter (HTTP hit metering from caches)? The UA-* request headers? MUST NOT is too strong a prohibition for automatically-set headers; I'd suggest SHOULD NOT. (The response shown in the "Manipulating response headers" example is actually impossible for conforming implementations to see; you need to send TE to get a Transfer-Encoding back).

Would it work if I removed "Transfer-Encoding: chunked" from the example? And what are your suggestions for those other headers?

My suggestion would be to weaken "User agents MUST NOT set any headers other than the headers set by the author using this method" to SHOULD NOT.

Ok, made that change for now as it sounds reasonable to me.


Also, add TE to the list of headers that UAs MAY add.

It MUST NOT be overriden?


[...]

setRequestHeader() is the problem. Something like this would improve it;

"UAs MAY set the Authorization header, based upon the operation of HTTP Authentication [RFC2617 ref]. If a challenge from the server is encountered, credentials SHOULD be generated based upon the values of the username and password specified by open(). UAs MUST NOT set the Authorization header solely because open() contains a username/password; it should only be set as part of the protocol described by HTTP Authentication [RFC2617 ref]."

That probably needs some massaging to take account of the precedence rules for sourcing username and password. It's tricky, because the UA can optimistically send Authorization, based upon previous challenges sent; you just don't want the UA sending it without having seen a challenge.

Used that text for now and added a note about rewording.


--
Anne van Kesteren
<http://annevankesteren.nl/>
<http://www.opera.com/>


Reply via email to