Ein HTTP-Fehler 0 ist aufgetreten

Wenn bei Drupal ein Http-Fehler 0 in Zusammenhang mit eine Datei-Upload auftritt, dann kann das auch daran liegen, dass der Webserver den X-Frame-Options Header sendet und er auf DENY gesetzt ist.

Dieser Header sorgt bei entsprechender Browser-Unterstützung (s.u.) dafür, dass Frames (normale oder inline Frames) von der Domain entweder gar nicht (DENY) angezeigt werden oder nur dann, wenn die Frame-einbindende Seite von der selben Domain kommt (SAMEORIGIN).

In Drupal 6 lassen sich über die AHAH (Asynchronous HTML and HTTP) genannte Komponente Formulare (Forms) dynamisch anpassen und verarbeiten (quasi sowas wie Ajax). Erfolgt darüber ein Datei-Upload, wird dazu von AHAH (bzw. jQuery) ein verstecktes iFrame genutzt. Da der X-Frame-Options Header aber auf deny gesetzt ist, wird das versteckte iFrame nicht geladen und bleibt leer. In der Folge gibt es einen Fehler im complete Event und da der Browser das Laden des iFrames verhindert, ist der HTTP-Status-Code 0.

Auf den entscheidende Hinweis von Christian Dale bin ich über die AHAH-Dokumentation gestoßen. Thx for pointing that out, Christian! :)

p.s.
Supporting Browsers:

  • Internet Explorer 8
  • Opera 10.50
  • Safari 4
  • Chrome 4.1.249.1042
  • Firefox 3.6.9 nativ und ältere Versionen mit NoScript

... und neuer

Threads zum Thema, die ich bisher gefunden habe: