Niedawno natrafiłem artykuł Nicholasa C. Zakasa dotyczący problemu pustych atrybutów src. Dotyczy on wysyłania dodatkowego żądania do serwera. Wystarczy stworzyć element IMG w HTML-u:

<img src="" >

lub w Javascripcie:

var img = new Image();
img.src = "";

i będziemy w poważnych kłopotach. Internet Explorer w tym przypadku próbuje odczytać katalog w którym znajduje się strona (np. gdy znajdujemy się na stronie http:\\frontend.pl\katalog\mojastrona.html wtedy zaczytujemy http:\\frontend.pl\katalog). Safari i Chrome natomiast wczytują jeszcze raz stronę na której znajduje się element z feralnym pustym atrybutem. Problem, który się pojawia przy tym ,wydawało się nieszkodliwym niedopatrzeniu, może spowodować podwojenie czy nawet potrojenie ruchu na stronie i zabicie serwerów. Dodatkowo przy takim „pustym” żądaniu (jeżeli wykorzystujesz nagłówki do zapisu stanów) może wywołać trudne do odnalezienia błędy.

Ten sam problem pojawia się w przypadku

<script src="">
<link href="">

dla Chrome, Safari i Firefox-a. Szczęśliwie sam autor już zajął się porządkowaniem spraw i zgłosił te błędy do odpowiednich zespołów twąrzycych wymienione przeglądarki i a dodatkowo zadbał aby w specyfikacji HTML5 znalazł odpowiedni fragment o ingonrowaniu pustych URL-i w elementach :

<img src="">
<input type="image" src="">
<script src="">
<link rel="stylesheet" href="">
<embed src="">
<object data="">
<iframe src="">
<video src="">
<video poster="">
<audio src="">
<command icon="">
<html manifest="">
<source src="">

Jedak póki wszystkie stare wersje przeglądarek nie znikną z powierzchni internetu trzeba mieć się na baczności.

Źródła na blogu Nicholasa C. Zakasa
Empty image src can destroy your site
Empty-string URLs in HTML – A followup

zdjęcie z bloga yuiblog.com

Leave your comment