php://input <> $_POST?
Je suis en train d'expérimenter avec Firefox Contenu de la Politique de Sécurité. En gros, c'est un en-tête spécial pour la page web qui indique au navigateur dont les ressources sont valides.
Quand une ressource est pas valide, car il rompt le politique, Firefox envoie un rapport à un URI au format json.
C'est un type de rapport
array(1) {
["csp-report"]=>
array(4) {
["request"]=>
string(71) "GET http://example.com/?function=detail&id=565 HTTP/1.1"
["request-headers"]=>
string(494) "Host: example.com
User-Agent: Mozilla/5.0 (Windows NT 5.1; rv:2.0b10pre) Gecko/20110115 Firefox/4.0b10pre
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: es-ar,en-us;q=0.8,es;q=0.5,en;q=0.3
Accept-Encoding: gzip, deflate
Accept-Charset: UTF-8,*
Keep-Alive: 115
Connection: keep-alive
Referer: http://example.com/index.php?function=search&query=Pata+de+cambio+
Cookie: the cookie
"
["blocked-uri"]=>
string(4) "self"
["violated-directive"]=>
string(30) "inline script base restriction"
}
}
Le type de contenu application/json; charset=UTF-8
Maintenant. Je m'attends à ce que cela soit disponible dans $_POST comme REQUEST_METHOD==POSTE, mais le post est toujours vide.
Je peux y accéder à partir de php://input, mais la question est: Pourquoi la demande n'est pas disponible dans $_POST?
Je ne peux même pas utiliser filter_input et $_REQUEST est vide...
OriginalL'auteur The Disintegrator | 2011-01-16
Vous devez vous connecter pour publier un commentaire.
$_POST
vous donne les variables qui apparaissent dans la page comme ceci:Mais ce que vous obtenez n'est pas une chaîne de requête valide. Il ressemble probablement à quelque chose comme ceci:
php://input
vous donne tout ce qui est après les en-têtes sous forme brute, donc dans ce cas je pense que c'est la seule façon d'obtenir ce que vous voulez.Désintégrateur: j'ai très peu d'expérience de ce type, mais le cadre que j'ai utilisé (ExtJS) convertit les objets JSON pour les chaînes de requête.
Vous aurez envie d'échapper à cette apostrophe dans .
OriginalL'auteur Brendan Long
Si une demande est envoyée comme
POST
il n'est pas forcément codé comme normalapplication/x-www-form-urlencoded
oumultipart/form-data
. Devrait Firefox envoyer un JSON corps, puis PHP ne sait pas comment le décoder.Vous devez vérifier
$_SERVER["HTTP_CONTENT_TYPE"]
. Si elle contientapplication/json
alors vous devez vraiment lire php://stdin:OriginalL'auteur mario
Il peut y en avoir plusieurs autres http types de demande (je suis conscient de 7 droit maintenant, et plusieurs détenteurs de place pour d'autres à venir).
Je voudrais imprimer le
$_REQUEST
et$_SERVER
de voir comment il arrive réellement.OriginalL'auteur Itay Moav -Malimovka