2014-12-10 10 views
5

Mit Laravel versuche ich, meine eigenen Header zu allen Antworten vom Server hinzuzufügen.Laravel fügt keine benutzerdefinierten Header hinzu

Ich habe folgendes in filters.php:

App::after(function($request, $response) 
{ 
    // security related 
    $response->headers->set('X-Frame-Options','deny'); // Anti clickjacking 
    $response->headers->set('X-XSS-Protection', '1; mode=block'); // Anti cross site scripting (XSS) 
    $response->headers->set('X-Content-Type-Options', 'nosniff'); // Reduce exposure to drive-by dl attacks 
    $response->headers->set('Content-Security-Policy', 'default-src \'self\''); // Reduce risk of XSS, clickjacking, and other stuff 
    // Don't cache stuff (we'll be updating the page frequently) 
    $response->headers->set('Cache-Control', 'nocache, no-store, max-age=0, must-revalidate'); 
    $response->headers->set('Pragma', 'no-cache'); 
    $response->headers->set('Expires', 'Fri, 01 Jan 1990 00:00:00 GMT'); 
    // CRITICAL: do NOT delete 
    $response->headers->set('X-Archer', 'DANGER ZONE'); 
}); 

Noch keine neuen Header angezeigt, wenn ich es testen:

[tesla | ~] => curl -o/dev/null -s -D - localhost 
HTTP/1.1 200 OK 
Date: Wed, 10 Dec 2014 23:13:30 GMT 
Server: Apache 
X-Powered-By: PHP/5.6.2 
Content-Length: 974 
Content-Type: text/html; charset=UTF-8 

[tesla | ~] => 

ich keine Fehler oder Warnungen in meinem Log-Dateien haben. Wie konnte das sein?

+0

Welche Version von Laravel? In 4 ist es 'header()' anstelle von 'headers-> set()' http://laravel.com/docs/4.2/responses – mopo922

+0

@ mopo922 Ich benutze 4.2, aber ändern es in '$ response-> header ('key', 'val') 'hat nichts geändert – 735Tesla

+0

Die andere Sache, die Sie versuchen könnten, ist nur normal PHP' header() ' – mopo922

Antwort

4

Probieren Sie dies aus: In der Controller-Funktion, die die Ansicht ruft, folgen mit einem Aufruf an die ‚Antwort‘ Klasse:

$contents = View::make('your_view')->with('data', $data); 
$response = Response::make($contents, 200); 
$response->header('X-Frame-Options','deny'); // Anti clickjacking 
$response->header('X-XSS-Protection', '1; mode=block'); // Anti cross site scripting (XSS) 
$response->header('X-Content-Type-Options', 'nosniff'); // Reduce exposure to drive-by dl attacks 
$response->header('Content-Security-Policy', 'default-src \'self\''); // Reduce risk of XSS, clickjacking, and other stuff 
    // Don't cache stuff (we'll be updating the page frequently) 
$response->header('Cache-Control', 'nocache, no-store, max-age=0, must-revalidate'); 
$response->header('Pragma', 'no-cache'); 
$response->header('Expires', 'Fri, 01 Jan 1990 00:00:00 GMT'); 
return $response; 

Natürlich können Sie die oben Refactoring könnte und es in einer Hilfsfunktion.

+0

Das hat es geschafft! Vielen Dank! – 735Tesla

+0

'$ response-> header ('X-Archer', 'GEFAHRZONE');' warum? –

+0

@LukasBernhard - Sie können diesen benutzerdefinierten Header ignorieren. Entfernt. – FredTheWebGuy

Verwandte Themen