[whatwg] Inconsistent behavior for empty-string URLs

On Mon, Dec 7, 2009 at 10:51 AM, Nicholas Zakas <nzakas at yahoo-inc.com> wrote:
> Hi,
>
>
>
> In a recent investigation into capacity issues, I found that there are
> several instances where the browser will make a second to the page based on
> resolving empty-string URLs in the several tags. I tested four instances:
> <img src=??>, <link href=??>, <script src=??>, and <iframe src=??>. Across
> major browsers today, the behavior is vastly different:
>
>
>
> * Internet Explorer 8
>
> ? - Make a request for: <img src=??>
>
> ? - Does not make a request for: <link href=??>, <script src=??>, <iframe
> src=??>
>
> * Firefox 3
>
> ? - Make a request for: <img src=??>, <link href=??>, <script src=??>
>
> ? - Does not make a request for: < <iframe src=??>.
>
> * Firefox 3.5
>
> ? - Make a request for: <link href=??>, <script src=??>
>
> ? - Does not make a request for: <img src=??>, ?<iframe src=??>
>
> * Safari 4
>
> ? - Make a request for:<img src=??>, ?<link href=??>, <script src=??>
>
> ? - Does not make a request for: <iframe src=??>
>
> * Chrome 3 (same as Safari)
>
> ? - Make a request for:<img src=??>, ?<link href=??>, <script src=??>
>
> ? - Does not make a request for: <iframe src=??>
>
> * Opera 10
>
> ? - Make a request for: (none)
>
> ? - Does not make a request for: <img src=??>, ?<link href=??>, <script
> src=??>, <iframe src=??>
>
>
>
> Presently, HTML5 does provide guidance on the correct behavior for <img
> src=??> in section 4.8.2, indicating that Firefox 3.5?s and Opera 10?s
> behavior in this regard is correct:
>
>
>
> ?If the base URI of the element is the same as the document?s address, then
> the src attribute?s value must not be the empty string.?
>
>
>
> This seems like it should also apply to the other elements that download
> resources automatically. All browsers seem to be in agreement over the
> behavior of <iframe src=??> despite a lack of guidance in any HTML spec, and
> I?d assume that they will soon all be in agreement over <img src=??>, per
> the HTML5 spec. It would be nice to formalize this behavior so that we can
> get all browsers to act in consistently in these confusing cases.
>
>
>
> My opinion is that Opera is the only browser currently doing this in a
> reasonable manner, in that it makes a lot of sense to me that an
> empty-string URL for an element that automatically downloads a resource
> should be considered invalid and ignored. My hypothesis is that these
> patterns are most frequently indications of errors rather than an
> intentional use of this little-known behavior, and as a result, sending
> another request is an unexpected and unwelcome result. For high-volume web
> sites, a single mistaken inclusion of one of these patterns immediately
> doubles page views, which can introduce capacity issues (which I?ve needed
> to investigate at least twice in the past three years).
>
>
>
> I?m interested in what others? opinions on this may be, as this seems like
> an important area in which to gain consistency.

Given that the concern is sites that accidentally leave a attribute
empty, wouldn't you want to prevent a request from going out even if
the base-uri is set? I.e. wouldn't you want to prevent a request from
going out for the current document:

foo.html:
<head><base src="bar.html">
<body><img src="">

It seems to me equally unlikely that someone would do that
intentionally expecting a request to be sent to "bar.html"?

/ Jonas

Received on Monday, 7 December 2009 21:52:45 UTC