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
