部门对外提供了一个http的post接口,但是对方公司的程序员使用c语言进行的调用,php这边一直无法获取到参数.遇到这种情况是因为对方没有完全按照http协议中的post发送数据.在http头部分没有增加content-type: application/x-www-form-urlencoded头,数据部分直接传递的json字符串,这样就导致php这边解析不到$_post的数据,传递内容的字符串应该是以name=xxx&劳动法 辞退age=xxx这种形式传递
content-type是属于http的内容头部,当增加这个头部,并且数据格式正确时,php的$_post才能够获取得到数据
content-type:application/x-www-form-urlencoded,这个类型是ajax默认的content-type类型,这时前端可以以对象方式直接给后端,或者以json方式传给后端, 当action为get时候,浏览器用x-www-form-urlencoded的编码方式把form数据转换成一个字串(name1=value1&name2=value2…),然后把这个字串append到url后面,用?分割,加载这个新的url。 当action为post时候,浏览器把form数据封装到http body中,然后发送到r冬奥会15个项目介绍ver。在浏览器控制台可以看到它们的内容都是以’from data’形式展现
content-type:application/json
如果ajax的头部是application/json,那么post时,数据必须以json格式传给后端,这时后端在$_post中不能直接接受到数据,必须用$globals[‘http_raw_post_data’]取出来,然后再json_decode就行奇丽的反义词了。
if($globals[‘content_typ汤姆索亚历险记e’]==’application/json’){
$_post=json_decode($globals[‘http_raw_post_data’]);
}
content-type:multipart/form-data是上传文件时指定的编码格式
还有就是当请求https的数据时,需要指定ca证书的位置,或者忽略掉ca验证,php请求https资源的时候使用curl扩展有参数可以忽略验证,如果是使用c西安健康工程职业学院url命令,那该命令使用的证书的位置是在/etc/pki/tls/certs/ca-bundle.crt
当使用cur无法访问https资源的时候,就需要下面的操作
1.需要下载ca证书 文件地址是 http://curl.haxx./ca/cacert.pem
2.把下载的文件放到这个位置 /etc/pki/tls/certs/ca-bundle.crt
本文发布于:2023-04-07 18:34:22,感谢您对本站的认可!
本文链接:https://www.wtabcd.cn/fanwen/zuowen/5886a3c177ac67a94ff3c62e87a27a19.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文word下载地址:[日常] 跨语言的POST请求问题的解决.doc
本文 PDF 下载地址:[日常] 跨语言的POST请求问题的解决.pdf
留言与评论(共有 0 条评论) |