2011-06-23 15 views
11

Cuando simplemente eco de algo fuera de archivo php, no envíe ninguna cabecera intencionadamente, sin embargo - hay algunos encabezados predeterminados presente de todos modos cuando miro respuesta Firebug:¿De dónde vienen estos encabezados HTTP adicionales?

cabeceras de respuesta:

HTTP /1.1 200 OK
servidor: nginx
Fecha: Jue 23 Jun 2011 19:33:51 GMT
Content-Type: text/html
Transfer-Encoding: fragmentada
conexion: keep-alive
Vary: Accept-Encoding
X-Powered-By: PHP/5.3.6-6 ~ dotdeb.1
Expira: Jue 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store , no-cache, debe-revalidate, después de la comprobación = 0, pre-check = 0
Pragma: no-cache
Content-Encoding: gzip

Tengo curiosidad - ¿son estas cabeceras de respuesta por defecto establecido por el servidor (nginx) o por PHP?

Respuesta

7

Creo que es una combinación de ambos ... Usted puede decir que "X-Powered-By: PHP/5.3. 6-6 ~ dotdeb.1 "proviene de PHP y" Server: nginx "proviene de NGINX.

Puede modificar las cabeceras en PHP de la siguiente manera:

<?php 
    header("HTTP/1.0 404 Not Found"); 
?> 

La cabecera gzip definitivamente proviene de Nginx, ya que está comprimiendo la salida (HTML) para el navegador. PHP puede "agregar" a los encabezados llamando a una función como la de arriba. Luego, el servidor lo combina con los encabezados de PHP y atiende la solicitud.

Depende de su servidor si los encabezados de PHP tienen prioridad sobre los encabezados del servidor.

Espero que esto ayude.

3

La mayoría están configuradas por nginx, por ejemplo, el servidor, la fecha, la codificación de contenido y la conexión. Sin embargo, algunos otros encabezados son establecidos por PHP, y usted puede agregar otros en PHP como este header("Name: Value");

2

La cabecera X-Powered-By está controlado por el valor de la directiva expose_php en php.ini:

Decide si PHP debe exponer el hecho de que está instalado en el servidor (por ejemplo, añadiendo su firma a la Web encabezado del servidor). No es una amenaza para la seguridad de ninguna manera, pero permite determinar si usa PHP en su servidor o no.

2

La mayoría de los encabezados son enviados por nginx. Para enumerar las cabeceras (a) enviado por PHP, utilice la función headers_list:

<?php 
echo htmlentities(print_R(headers_list(), true)); 
?> 
2

PHP ajusta automáticamente algunos de ellos, como Content-Type: text/html para la página hola mundo. nginx establece los que tienen que ver con el socket, como Connection: keep-alive.

Encontrará la configuración para las conexiones en la configuración de nginx. En cuanto al contenido, es PHP. Puede anular algunos de ellos con la función header() en PHP, así como agregar sus propios encabezados personalizados. http://php.net/manual/en/function.header.php

Por ejemplo, podría configurar el Content-Type a application/json si usted está planeando tener PHP enviar una cadena JSON.

1

También puede sobrescribir cualquiera de los encabezados de servidor predeterminados utilizando la función header(). Por ejemplo, si incluye en su PHP header('Server: ') esto reiniciará el servidor: el encabezado estará en blanco.

1

Lo que aún falta en las respuestas es el papel de PHP:

Algunas de las cabeceras son de hecho fijados por el propio PHP, pero la razón no es tan fácil de encontrar. Es la sesión de caché comportamiento delimitador predeterminado se explica aquí: http://www.php.net/manual/en/function.session-cache-limiter.php

¿Qué hay que yo sepa, no en la documentación es cómo apagarlos por completo - Basta con pasar algún valor indefinido a ella:

session_cache_limiter(false); 

Usted debe hacer esto antes empiezas tu sesión En caso de que esté usando Zend Framework, debe configurar esto antes de que sus aplicaciones arranquen(); de lo contrario, no funcionará.

Cuestiones relacionadas