Clarity benötigt bei der Verwendung von mehreren 403 verbotene header () functionen am Anfang der Plugin-Dateien

Sehen Sie sich das folgende Code-Snippet an. Ich habe das in einem der Plugins gesehen, die ich gerade lese.

if ( ! defined( 'ABSPATH' ) ) { header( 'Status: 403 Forbidden' ); header( 'HTTP/1.1 403 Forbidden' ); exit; } 

Ich verstehe, dass dieses Skript eine verbotene 403-Header-Antwort an den Browser für nicht autorisierten Zugriff sendet. Aber warum zwei 403 Header? Ist die zweite Art von Fallback auf die erste?

Solutions Collecting From Web of "Clarity benötigt bei der Verwendung von mehreren 403 verbotene header () functionen am Anfang der Plugin-Dateien"

Der richtige Weg, um einen Status zu senden (wenn WordPress nicht verfügbar ist) ist:

 http_response_code( 403 ); 

Siehe das PHP-Handbuch für seine Definition .

In Plugin-Dateien sollte dies jedoch niemals der “Standard” -Code über einem Dateiheader sein. Siehe ” Lohnen”, um den direkten Zugriff auf Designdateien einzuschränken? für eine Diskussion.

Verwenden status_header( 403 ) in WordPress status_header( 403 ) wenn Sie es benötigen.


Ein Hinweis zu dem von Ihnen geposteten Code:

 header( 'Status: 403 Forbidden' ); header( 'HTTP/1.1 403 Forbidden' ); 

Die erste Zeile ist eine “spezielle” Behandlung für PHP, die im CGI-Modus läuft, die zweite ist eine spezifische HTTP-Protokoll-Version ohne jegliche Überprüfung. Wenn die Verbindung über HTTP 2 oder 1.1 ist, macht dies keinen Sinn.

Beide sind falsch, weil der richtige Weg, den richtigen Status mit header() zu senden, das zweite und das dritte Argument dieser function ist.

Das würde also besser funktionieren:

 header( 'Status: 403 Forbidden', true, 403 ); 

Das zweite Argument weist PHP an, andere Header mit demselben Namen zu überschreiben, der dritte steht für den echten Status. Der von Ihnen gepostete Code ist ein gutes Gegenbeispiel . 🙂