Laravel 4 immer wieder ein HTTP-status-code 200
Ich habe untenstehenden code in error.php, die ausgelöst wird, mit App::abort(404, $error)
in meinem controller. Noch meine Antwort: status-code 200(ok). Ich habe versucht, mit verschiedenen Fehler-codes wie 400, 403
//NotFoundException handler
App::error(function(NotFoundException $e)
{
$default_message = 'The requested resource was not found';
return Response::json(array(
'error' => $e->getMessage() ?: $default_message,
), 404);
});
Erhalten Sie die json-Nachricht, die angibt, dass dieser Fehler tatsächlich ausgelöst?
ja, ich bin immer die aktuelle Fehlermeldung im JSON-format. Ich bin durch die Unterbrechung des status-Codes aus der response-und der Anzeige von Nachrichten in Sicht
Das sieht eher wie ein bug-report, die abgelegt werden soll, auf GitHub. Sie haben sicherlich nicht gefragt!
Zunächst war es die Arbeit von Controllern und von error.php. Nach einem gewissen Punkt funktioniert es nicht mehr.
ja, ich bin immer die aktuelle Fehlermeldung im JSON-format. Ich bin durch die Unterbrechung des status-Codes aus der response-und der Anzeige von Nachrichten in Sicht
Das sieht eher wie ein bug-report, die abgelegt werden soll, auf GitHub. Sie haben sicherlich nicht gefragt!
Zunächst war es die Arbeit von Controllern und von error.php. Nach einem gewissen Punkt funktioniert es nicht mehr.
InformationsquelleAutor Saravana Kumar | 2013-05-23
Du musst angemeldet sein, um einen Kommentar abzugeben.
Für jeden noch googeln dieses problem:
Ich kämpfte mit diesem problem seit Stunden. Für mich war das problem, verursacht durch ein Problem mit einem meiner Controller.
Überprüfen Sie alle Ihre Controller und stellen Sie sicher, es gibt keine Leerzeichen vor den
<?php
tag. Die <?php
tag sollte das erste, was in die Datei. Ein einzelnes Leerzeichen vor der<?php
tag in Ihren Controller geroutet sind als solche:Wird dazu führen, dass alle status-codes 200.
Ich habe alle meine regler... noch immer dieses problem.
InformationsquelleAutor knews12
Ich glaube, unabhängig davon, sollten Sie erhalten eine 404-Antwort, also es könnte etwas anderes passiert, das ist das Ergebnis der code nicht in deiner Frage.
Dass gesagt wird, die Exception-Klasse geworfen wird für 404 ist
NotFoundHttpException
eher alsNotFoundException
.Seit Laravel 4 verwendet Symfony ist HttpKernal, wird die Ausnahme hier.
Können Sie sehen, hier wo
App::abort()
wirftNotFoundHttpException
wenn ein 404 ausgelöst wird.Damit Ihr code sollte wie folgt Aussehen:
Wichtig: Dieser wird nur ausgelöst, um einen 404-status, das ist der entsprechende code zu NotFoundHttpException. Andere status-codes zurück anderen Exception-Klassen. Zu erfassen alle HTTP-status-Fehler-codes Ausnahmen, type-hint für HttpException etwa so:
Schließlich betrachten mit ein bisschen Content Negotiation bei der Entscheidung zur Rückkehr JSON oder HTML.
\Symfony\Component\HttpKernel\Exception\HttpException
anderes, es gab einen fatal error "HttpException-Klasse nicht vorhanden"Oh, Total - tut mir Leid, ich sollte haben darauf hingewiesen, dass aus. Ich werde Bearbeiten Sie die Antwort zu setzen, dass in
Nur als Randbemerkung: App::error() übergibt die Ausnahme-Objekt und den status-code
App::error(function(Exception $exception, $code)
so können Sie$code
eher als$exception->getStatusCode()
wenn es sein mussInformationsquelleAutor fideloper
Die Lösung nicht für mich gearbeitet, also falls jemand noch auf der Suche nach einer Antwort, ich dachte, es am besten, um es hier zu setzen, statt eine andere Frage.
Nach einiger Zeit hatte ich dieses problem auch, in meinem
app/Exceptions/Handler.php
ich hatte:Dieser war in meiner lokalen Umgebung, jedoch in der homolog Umgebung (welche reproduziert die Produktionsumgebung, nur klar zu sein) hat es nicht zurückgegeben, wird der richtige status-code.
Nach einem weiteren Blick, den ich begann, mich bei Laravel ist docs, und ich änderte den Aufruf der folgenden:
Und das war der trick. Hoffe, dass dies helfen kann.
InformationsquelleAutor TiagoRL