php://输入<> $ _POST?

发布于 2021-02-24 10:37:21

我正在尝试使用Firefox的内容安全策略。基本上,它是网页的特殊标头,告诉浏览器哪些资源有效。

当某些资源由于违反策略而无效时,Firefox将以json格式将报告发送到给定的URI。

这是典型的报告

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"
  }
}

内容类型为application / json; 字符集= UTF-8

现在。我希望这在$ _POST中可用,如REQUEST_METHOD == POST,但post始终为空。我可以从php://
input访问它,但问题是:为什么请求在$ _POST中不可用?

我什至不能使用filter_input并且$ _REQUEST为空…

关注者
0
被浏览
551
1 个回答
  • 面试哥
    面试哥 2021-02-24
    为面试而生,有面试问题,就找面试哥。

    $_POST 为您提供表单变量,该变量将显示在页面中,如下所示:

    POST /some_path HTTP/1.1
    
    myvar=something&secondvar=somethingelse
    

    但是,您得到的不是有效的查询字符串。它可能看起来像这样:

    POST /some_path HTTP/1.1
    
    {'this':'is a JSON object','notice':'it\'s not a valid query string'}
    

    php://input以原始格式在标头之后提供所有内容,因此在这种情况下,我认为这是获得所需内容的唯一方法。



推荐阅读
知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看