Wann ist ein 404 kein 404?

8

Ich benutze diesen jQuery-Aufruf, um eine .php-Datei zu laden, die sich auf demselben Server befindet.

Mit der Javascript-Konsole von Chrome wurde jedoch die Meldung "404 nicht gefunden" in der PHP-Datei gefunden, die ich gerade laden möchte. Ich kann die Datei zwar direkt laden, indem ich direkt in der Konsole auf die Datei klicke.

Außerdem kann ich die URL der Datei kopieren, direkt von der JavaScript-Konsole, wo sie 404 meldet (nicht gefunden), eine neue Registerkarte öffnen, sie in die Adressleiste einfügen und das Skript ohne Probleme drücken.

Ist das etwas Spezifisches für die jQuery get-Methode? Was könnte dazu führen, dass die Seite in der get-Methode 404 wird, aber beim Aufruf direkt ausgeführt wird?

%Vor%

Hier ist die Quelldatei colorReset.php, die von get ...

aufgerufen wird %Vor%     
Scott B 01.06.2011, 14:42
quelle

6 Antworten

13

Wie in einer anderen Antwort beschrieben loading wp-blog-header.php bootstrapt den gesamten Prozess zur Verarbeitung von WordPress-Anfragen. Da es sich bei Ihrem Skript nicht um einen WordPress-Beitrag handelt, setzt dieser Prozess den 404-Header so, dass er den gesuchten Inhalt nicht finden kann.

Da es so aussieht, als ob Sie nur auf die WordPress-Benutzerfunktionen zugreifen möchten, ist es besser, wenn Sie wp-load.php mit einbeziehen, was Ihnen erlaubt, diese Funktionen aufzurufen, ohne den Anfrage-Parser aufzurufen.

    
Tim Stone 01.06.2011, 15:50
quelle
6

Vielleicht möchten Sie sich die Kopfzeilen der Antwort ansehen, die Sie erhalten. Es ist nicht ungewöhnlich, ein Dokument mit einer 404-Antwort zu senden, die ein Browser möglicherweise anzeigt. Aber es ist immer noch eine 404-Antwort, und JQuery wird es wie einen Fehler behandeln (was nach dem HTTP-Standard tatsächlich der Fall ist).

    
Waldheinz 01.06.2011 14:46
quelle
4

Das HTTP 404 kommt von der Kopfzeile der Antwort - es kann einen Antwortinhalt geben (normalerweise eine Meldung "Hoppla, wir können es nicht finden"), aber es wird von einigen Browsern ignoriert, wenn es klein ist (IE hat eigene Nachrichten für kleine 404s).

Ich nehme an, dass der Server den 404-HTTP-Status-Header zu colorReset.php hinzufügt - das ist ein PHP / welcher Server auch immer verwendet wird, nicht jQuery.

jQuerys $.get -Methode löst nur die success -Funktion aus, wenn Sie einen HTTP 200-Status vom Server zurückbekommen, andernfalls wird die error -Funktion ausgelöst - so können Sie Ihren farbigen Hex-Code mit dem Status 404 erhalten.

Aktualisieren

Ich denke, hier ist etwas Verwirrung.

  • Ein HTTP 404 bedeutet nicht , dass Ihr Browser die Seite
  • nicht finden kann
  • Ein HTTP 404 bedeutet, dass der Server (in diesem Fall Apache) Ihnen sagt, dass er die Seite nicht finden konnte, aber immer noch eine Seite mit Inhalt zurückgibt.

Wenn Sie in Ihrem Browser eine 404-Seite aufrufen, wird nur der Inhalt der Seite geladen.

Wenn Sie eine 404-Seite über $.get laden, wird die zugewiesene error -Methode ausgelöst, aber der Konstruktor auf $.get lässt nur die Methode success zu.

Dein jQuery würde funktionieren, wenn du es tust:

%Vor%

Allerdings würde ich mir ansehen, warum Ihr Server zuerst eine 404 zurückgibt - colorReset.php könnte einen Fehler enthalten oder die Serverkonfiguration könnte falsch sein.

    
Keith 01.06.2011 14:51
quelle
2

Da laut $. get gleich

ist %Vor%

Diese Seite sagt Ссылка , dass:

Eine Karte mit numerischen HTTP-Codes und Funktionen, die aufgerufen werden, wenn die Antwort den entsprechenden Code hat. Beispielsweise wird Folgendes angezeigt, wenn der Antwortstatus ein 404 lautet:

%Vor%

Wenn die Anfrage erfolgreich ist, nehmen die Statuscode-Funktionen die gleichen Parameter wie der Erfolgs-Callback an; Wenn es zu einem Fehler kommt, nehmen sie die gleichen Parameter wie der Fehler Callback.

    
max4ever 01.06.2011 14:50
quelle
0

Diese Datei befindet sich im selben Verzeichnis?

Wenn diese Datei im selben Verzeichnis ist, dann müssen Sie keinen umgekehrten Schrägstrich geben, geben Sie einfach den Dateinamen

ein     
Pratik 01.06.2011 14:46
quelle
0

Vielleicht erstellt colorReset.php das 404, weil Ihnen einige Parameter fehlen oder weil es Mittwoch ist? Der Punkt ist, dass jedes PHP-Skript einen 404 aus irgendeinem Grund ausgeben kann, den der Programmierer wünscht. Dieses Skript sendet mittwochs 404:

%Vor%     
James 01.06.2011 15:17
quelle