php接收不到post数据_PHP解决Vue发起POST请求,接收不到数据
刚开始使用vue对接后端接口时,PHP后端一直接受不到前端传的参数。找了很久,发现vue请求接口传参的形式是流的方式,因此后端要在接受数据的方面做一些改变。这里我用的是PHP原生方法file_get_contents。
file_get_contents("php://input")的使用方法
php://input 是个可以访问请求的原始数据的只读流。 POST 请求的情况下,最好使用 php://input 来代替 ,因为它不依赖于特定的 php.ini 指令。
而且,enctype="multipart/form-data" 的时候 php://input 是无效的。
下面是使用中的一些要点:
1.php://input 可以读取http entity body中指定长度的值,由Content-Length指定长度,不管是POST方式或者GET方法提交过来的数据。但是,一般GET方法提交数据 时,http request entity body部分都为空。
2.php://input 与$HTTP_RAW_POST_DATA读取的数据是一样的,都只读取Content-Type不为multipart/form-data的数据。
3.Coentent-Type仅在取值为application/x-www-data-urlencoded和multipart/form-data两种情况下,PHP才会将http请求数据包中相应的数据填入全局变量$_POST
4.PHP不能识别的Content-Type类型的时候,会将http请求包中相应的数据填入变量$HTTP_RAW_POST_DATA
5. 只有Coentent-Type为multipart/form-data的时候,PHP不会将http请求数据包中的相应数据填入php://input,否则其它情况都会。填入的长度,由Coentent-Length指定。
6.只有Content-Type为application/x-www-data-urlencoded时,php://input数据才跟$_POST数据相一致。
7.php://input数据总是跟$HTTP_RAW_POST_DATA相同,但是php://input比$HTTP_RAW_POST_DATA更凑效,且不需要特殊设置php.ini
8.PHP会将PATH字段的query_path部分,填入全局变量$_GET。通常情况下,GET方法提交的http请求,body为空。
代码实例
1.接收XML数据(php用file_get_contents("php://input")或者$HTTP_RAW_POST_DATA可以接收xml数据)
xmldata';//要发送的xml
$url = 'http://localhost/test/getXML.php';//接收XML地址
$header = 'Content-type: text/xml';//定义content-type为xml
$ch = curl_init(); //初始化curl
curl_setopt($ch, CURLOPT_URL, $url);//设置链接
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);//设置是否返回信息
curl_setopt($ch, CURLOPT_HTTPHEADER, $header);//设置HTTP头
curl_setopt($ch, CURLOPT_POST, 1);//设置为POST方式
curl_setopt($ch, CURLOPT_POSTFIELDS, $xml);//POST数据
$response = curl_exec($ch);//接收返回信息
if(curl_errno($ch)){//出错则显示错误信息
print curl_error($ch);
}
curl_close($ch); //关闭curl链接
echo $response;//显示返回信息
?>
2.上传文件
3.接收文件
3.获取HTTP请求原文
/**
* 获取HTTP请求原文
* @return string
*/
function get_http_raw() {
$raw = '';
// (1) 请求行
$raw .= $_SERVER['REQUEST_METHOD'].' '.$_SERVER['REQUEST_URI'].' '.$_SERVER['SERVER_PROTOCOL']."\r\n";
// (2) 请求Headers
foreach($_SERVER as $key => $value) {
if(substr($key, 0, 5) === 'HTTP_') {
$key = substr($key, 5);
$key = str_replace('_', '-', $key);
$raw .= $key.': '.$value."\r\n";
}
}
// (3) 空行
$raw .= "\r\n";
// (4) 请求Body
$raw .= file_get_contents('php://input');
return $raw;
}
php接收不到post数据_PHP解决Vue发起POST请求,接收不到数据相关推荐
- php post请求后端拿不到值_PHP解决Vue发起POST请求,接收不到数据
刚开始使用vue对接后端接口时,PHP后端一直接受不到前端传的参数.找了很久,发现vue请求接口传参的形式是流的方式,因此后端要在接受数据的方面做一些改变.这里我用的是PHP原生方法file_get_ ...
- easyui datatable ajax 加载数据,ASP.NET easyUI--datagrid 通过ajax请求ASP.NET后台数据的分页查询...
js前台对datagrid的定义代码,如下 mygrid = $('#mytable').datagrid({ fit: true, //自动大小 height: 'auto', rownumbers ...
- vue页面回显数据_解决vue表单回显数据无法修改的问题
前言:今天在做修改操作的时候遇到了一个问题,数据回显到修改表单之后,发现无法输入,也不能实现修改 项目环境:springboot+vue前后端分离 问题:修改操作数据回显无法输入值 一.问题截图 二. ...
- php获取post表单数据_PHP get和post方法获取form表单数据
在 PHP 中使用 get 和 post 两种方法接收来自 form 表单的值,在 form 表单中可以定义 PHP 的接收方式和接收地址. get 和 post 方法主要有以下几点区别. get 是 ...
- 无线设置 用户_关于苹果手机 应用软件自动关闭无线数据的解决办法,iPhone APP 打不开 数据。自动关闭。完美解决...
iPhone 有些时候不知道什么原因 一些APP会打不开无线数据 就是你设置了 然后打开软件 一看无法联网 切换到设置一看 自己 关闭了.网上有很多方法根本不管用 最后告诉大家一个简单完美解决的方法 ...
- php向页面中添加数据_PHP创建文件,并向文件中写入数据,覆盖,追加的实现代码...
创建文件我们用到函数 fopen ( string filename, string mode ) 参数filename为创建文件名 参数mode为以什么方式打开文件filename 其中mode可能 ...
- 一行代码解决Vue跨域请求Vue报错:AxiosError
这种错误一般情况下都是域名错误或者跨域权限不够,也就是我们常说的"网络请求跨域错误" 我们首先是核实一下域名是否正确,如果域名正确没有输入错误那就是跨域权限问题了,那我们如何解决呐 ...
- vue使用ajax提交数据,vue使用ajax请求后台数据的方法
vue使用ajax请求后台数据的方法 发布时间:2020-10-15 16:54:41 来源:亿速云 阅读:108 作者:栢白 这篇文章主要介绍了vue使用ajax请求后台数据的方法,具有一定借鉴价值 ...
- 计算机网络没有接收数据,本地连接有发送无接收数据的解决方法
"本地连接"有发送无接收数据的解决方法 发布时间:2013-07-23 23:34:03 作者:佚名 我要评论 在日常的网络维护中,常常出现"本地连接" ...
最新文章
- 谷歌发布 Android 8.1 首个开发者预览版,优化内存效率
- 5.4 异步TCP编程(一)
- Spring Security——SessionManagement中InvalidSessionStrategy自定义——简单跳过Fitter过滤刷新Session
- 开放下载!《iOS开发者必读资讯》
- acwing提高组 第一章 动态规划
- LeetCode 669. 修剪二叉搜索树
- [转载] 使用Python编写打字训练小程序
- 导出到文件_Java项目导出可运行的jar文件
- php 遍历文件夹并压成zip_php ZipArchive实现多文件打包下载实例
- 【面试刷题复习】更新中 2021.8.30
- Dictionarystring,object性能之测试
- 区块链发展迎来新机遇
- [湖南集训]谈笑风生
- C++——NOIP模拟题——葫芦
- python3爬妹子图_python3爬妹子图
- matlab 小波 清浊音,matlab语音信号处理如何判别清浊音?
- Ubuntu16.04无法连接Wifi解决方案 (绝对有效)
- 【简单实现html页面指定某一个div局部刷新】
- NETPLIER: Probabilistic Network Protocol Reverse Engineering from Message Traces代码复现记录
- android把音乐存到sd卡上,将离线音乐移动到Spotify for Android到SD卡 | MOS86
热门文章
- ajax和php没反应,PHP和AJAX没有更新发生
- Emgu-WPF学习使用-阈值化
- 公开课 之 心蓝 计算器 (课堂笔记)
- WEB服务器技术名词
- Python学习之路—初识Python
- 【9603】最大整数
- Swift - UIBezierPath
- SpannableString与SpannableStringBuilder使用
- laravel wherehas 替换表前缀_AB(罗克韦尔)PLC如何快速创建Logix5000变量表
- centos sudo不能运行_Linux命令su、sudo、sudo su、sudo -i使用和区别