最近写个PHP脚本,POST一些数据给指定脚本,并且需要设置Header。
但是设置的Header不生效,为了搞明白到底哪里出了问题,做了一点学习,记录如下,备忘并供遇到同样问题的朋友参考。
(图源 :pixabay)
回显Header
为了测试我设置成Header是否成功发送,我需要一个脚本来回显Header设置,经过学习,我发现PHP自带一个函数getallheaders(),使用这个函数可以轻易获取Header信息。
简单的示例脚本如下:
1 | <?php |
让我们来测试一下,浏览器直接访问上述脚本,返回如下内容:
可见上述代码工作良好,可以作为我们的测试辅助工具。
另外需要说明的是getallheaders()其实是apache_request_headers()的别名,两者是一样的。
发送Header
我使用PHP的curl 函数来完成POST。
1 | <?php |
代码如上所示,但是执行上述代码后,返回代码中并没有含有我们设置的内容:
那么哪里出错了呢?通过查看curl_setopt(),我发现传递给CURLOPT_HTTPHEADER
选项的,应该是一个数组:
所以上述代码中,正确的写法应为:
$headers = array("Accept-Encoding: gzip, deflate");
再进行测试后,果然返回了我要的结果,证明Header设置成功了。
另外,既然是array,就可以设置多条Header了,这恰恰说明我们之前直接传入字符串的方法是错误的。
示例代码仅供参考
相关链接
https://steemit.com/~witnesses type in
oflyhigh
and click VOTE
Vote @oflyhigh via Steemconnect
Thank you!
This page is synchronized from the post: ‘每天进步一点点:PHP POST以及设置Header的一点探索’