刚开始使用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请求,接收不到数据相关推荐

  1. php post请求后端拿不到值_PHP解决Vue发起POST请求,接收不到数据

    刚开始使用vue对接后端接口时,PHP后端一直接受不到前端传的参数.找了很久,发现vue请求接口传参的形式是流的方式,因此后端要在接受数据的方面做一些改变.这里我用的是PHP原生方法file_get_ ...

  2. easyui datatable ajax 加载数据,ASP.NET easyUI--datagrid 通过ajax请求ASP.NET后台数据的分页查询...

    js前台对datagrid的定义代码,如下 mygrid = $('#mytable').datagrid({ fit: true, //自动大小 height: 'auto', rownumbers ...

  3. vue页面回显数据_解决vue表单回显数据无法修改的问题

    前言:今天在做修改操作的时候遇到了一个问题,数据回显到修改表单之后,发现无法输入,也不能实现修改 项目环境:springboot+vue前后端分离 问题:修改操作数据回显无法输入值 一.问题截图 二. ...

  4. php获取post表单数据_PHP get和post方法获取form表单数据

    在 PHP 中使用 get 和 post 两种方法接收来自 form 表单的值,在 form 表单中可以定义 PHP 的接收方式和接收地址. get 和 post 方法主要有以下几点区别. get 是 ...

  5. 无线设置 用户_关于苹果手机 应用软件自动关闭无线数据的解决办法,iPhone APP 打不开 数据。自动关闭。完美解决...

    iPhone 有些时候不知道什么原因 一些APP会打不开无线数据 就是你设置了 然后打开软件 一看无法联网 切换到设置一看 自己 关闭了.网上有很多方法根本不管用 最后告诉大家一个简单完美解决的方法 ...

  6. php向页面中添加数据_PHP创建文件,并向文件中写入数据,覆盖,追加的实现代码...

    创建文件我们用到函数 fopen ( string filename, string mode ) 参数filename为创建文件名 参数mode为以什么方式打开文件filename 其中mode可能 ...

  7. 一行代码解决Vue跨域请求Vue报错:AxiosError

    这种错误一般情况下都是域名错误或者跨域权限不够,也就是我们常说的"网络请求跨域错误" 我们首先是核实一下域名是否正确,如果域名正确没有输入错误那就是跨域权限问题了,那我们如何解决呐 ...

  8. vue使用ajax提交数据,vue使用ajax请求后台数据的方法

    vue使用ajax请求后台数据的方法 发布时间:2020-10-15 16:54:41 来源:亿速云 阅读:108 作者:栢白 这篇文章主要介绍了vue使用ajax请求后台数据的方法,具有一定借鉴价值 ...

  9. 计算机网络没有接收数据,本地连接有发送无接收数据的解决方法

    "本地连接"有发送无接收数据的解决方法 发布时间:2013-07-23 23:34:03   作者:佚名   我要评论 在日常的网络维护中,常常出现"本地连接" ...

最新文章

  1. 谷歌发布 Android 8.1 首个开发者预览版,优化内存效率
  2. 5.4 异步TCP编程(一)
  3. Spring Security——SessionManagement中InvalidSessionStrategy自定义——简单跳过Fitter过滤刷新Session
  4. 开放下载!《iOS开发者必读资讯》
  5. acwing提高组 第一章 动态规划
  6. LeetCode 669. 修剪二叉搜索树
  7. [转载] 使用Python编写打字训练小程序
  8. 导出到文件_Java项目导出可运行的jar文件
  9. php 遍历文件夹并压成zip_php ZipArchive实现多文件打包下载实例
  10. 【面试刷题复习】更新中 2021.8.30
  11. Dictionarystring,object性能之测试
  12. 区块链发展迎来新机遇
  13. [湖南集训]谈笑风生
  14. C++——NOIP模拟题——葫芦
  15. python3爬妹子图_python3爬妹子图
  16. matlab 小波 清浊音,matlab语音信号处理如何判别清浊音?
  17. Ubuntu16.04无法连接Wifi解决方案 (绝对有效)
  18. 【简单实现html页面指定某一个div局部刷新】
  19. NETPLIER: Probabilistic Network Protocol Reverse Engineering from Message Traces代码复现记录
  20. android把音乐存到sd卡上,将离线音乐移动到Spotify for Android到SD卡 | MOS86

热门文章

  1. ajax和php没反应,PHP和AJAX没有更新发生
  2. Emgu-WPF学习使用-阈值化
  3. 公开课 之 心蓝 计算器 (课堂笔记)
  4. WEB服务器技术名词
  5. Python学习之路—初识Python
  6. 【9603】最大整数
  7. Swift - UIBezierPath
  8. SpannableString与SpannableStringBuilder使用
  9. laravel wherehas 替换表前缀_AB(罗克韦尔)PLC如何快速创建Logix5000变量表
  10. centos sudo不能运行_Linux命令su、sudo、sudo su、sudo -i使用和区别