php curlopt_postfields,PHP的CURLOPT_POSTFIELDS参数使用数组和字符串的区别 - CSDN博客

PHP的CURL组件是非常常用的HTTP请求模拟器。

通常要发送post数据时,我已经习惯于这样写:

curl_setopt( $ch, CURLOPT_POSTFIELDS,$post_data);

但是在向某一个服务器发送请求的时候,服务器返回500。而使用socket方式连接上去发送请求,返回正常的数据。

尝试发送到一个仅有<?php print_r($_SERVER);?>的网页上,可以看到使用数组发送POST数据时,收到的CONTENT_TYPE如下:

[CONTENT_TYPE] => multipart/form-data; boundary=—————————-f924413ea122

而使用http_build_query($post_data),收到的CONTENT_TYPE如下:

[CONTENT_TYPE] => application/x-www-form-urlencoded

可见,当CURLOPT_POSTFIELDS被设置为数组时,HTTP头会发送Content_type: application/x-www-form-urlencoded。这个是正常的网页

提交表单时,浏览器发送的头部。而multipart/form-data我们知道这是用于上传文件的表单。包括了boundary分界符,会多出很多字节。

手册上提到:

The full data to post in a HTTP “POST” operation. To post a file, prepend a filename with @ and use the full path. This can either be passed as a urlencoded string like ‘para1=val1&para2=val2&…’ or as an array with the field name as key and field data as value.

If value is an array, the Content-Type header will be set to multipart/form-data.

使用数组提供post数据时,CURL组件大概是为了兼容@filename这种上传文件的写法,默认把content_type设为了multipart/form-data。虽然对于大多数web服务器并没有影响,但是还是有少部分服务器不兼容。

本文得出的结论是,在没有需要上传文件的情况下,尽量对post提交的数据进行http_build_query,然后发送出去,能实现更好的兼容性,更小的请求数据包。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/512079.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

BCS2022大会将提前至5月 网络安全产业空间扩容将成热门话题

年度网络安全的盛会即将开启。 2022年3月30日&#xff0c;2022年北京网络安全大会&#xff08;BCS2022&#xff09;新闻发布会在北京奇安信安全中心召开&#xff0c;宣布2022年北京网络安全大会“提档”至5月24日至26日&#xff0c;并与北辰集团国家会议中心达成战略合作&#…

基于 Istio 的全链路灰度方案探索和实践

简介&#xff1a; 本文介绍的基于“流量打标”和“按标路由” 能力是一个通用方案&#xff0c;基于此可以较好地解决测试环境治理、线上全链路灰度发布等相关问题&#xff0c;基于服务网格技术做到与开发语言无关。同时&#xff0c;该方案适应于不同的7层协议&#xff0c;当前已…

图像检索在高德地图POI数据生产中的应用

简介&#xff1a; 高德通过自有海量的图像源&#xff0c;来保证现实世界的每一个新增的POI及时制作成数据。在较短时间间隔内&#xff08;小于月度&#xff09;&#xff0c;同一个地方的POI 的变化量是很低的。 作者 | 灵笼、怀迩 来源 | 阿里技术公众号 一 背景 POI 是 Poin…

Redis HyperLogLog 是什么?这些场景使用它~

作者 | 就是码哥呀来源 | 码哥字节在移动互联网的业务场景中&#xff0c;数据量很大&#xff0c;我们需要保存这样的信息&#xff1a;一个 key 关联了一个数据集合&#xff0c;同时对这个数据集合做统计。统计一个 APP 的日活、月活数&#xff1b;统计一个页面的每天被多少个不…

matlab三角形分割,MATLAB 2014b及以上版本中带有画家渲染器的三角形拆分补丁

在解决实际问题之前,这是一个值得怀疑的解决方法&#xff1a;对角线只是三角形之间的空白区域,所以我们看到的是补丁后面的白色空间.愚蠢的想法&#xff1a;让我们用匹配的颜色填充该空间而不是白色.为此,我们将复制所有对象,并通过一个tiiiiny位来抵消新对象.码&#xff1a;hi…

网易云音乐音视频算法的 Serverless 探索之路

简介&#xff1a; 网易云音乐最初的音视频技术大多都应用在曲库的数据处理上&#xff0c;基于音视频算法服务化的经验&#xff0c;云音乐曲库团队与音视频算法团队一起协作&#xff0c;一起共建了网易云音乐音视频算法处理平台&#xff0c;为整个云音乐提供统一的音视频算法处理…

小小的 likely 背后却大有玄机!

作者 | 张彦飞allen来源 | 开发内功修炼今天我给大家分享一个内核中常用的提升性能的小技巧。理解了它对你一定大有好处。在内核中很多地方都充斥着 likely、unlikely 这一对儿函数的使用。随便揪两处&#xff0c;比如在 TCP 连接建立的过程中的这两个函数。//file: net/ipv4/t…

阿里云马涛:因云进化的基础软件

简介&#xff1a; 基础软件的云原生化。 编者按&#xff1a;2021 年10 月20 日&#xff0c;在2021 云栖大会云计算产业升级峰会上&#xff0c;阿里云“因云而生”云原生心智大图正式发布&#xff0c;包含弹性计算、云网络、基础产品、基础设施、操作系统、云安全、开放平台等7个…

阿里云ECI如何6秒扩容3000容器实例?

简介&#xff1a; 2021年云栖大会现场&#xff0c;阿里云工程师演示了在6秒时间内成功启动3000个ECI&#xff0c;并全部进入到Running状态。本文将为你揭开阿里云ECI是如何做到极速扩容的。 引言 根据最新CNCF报告&#xff0c;有超过90%的用户在生产环境使用容器&#xff0c;…

matlab 轴承 压力分布 绘图,数值计算绘制动压轴承压力场分布图

动压轴承的压力场分布,要求求解雷诺方程的简化形式为:!!xh3!!px!"!!zh3!!pz!"6U"!h!x公式中参数的含义参见流体动力学。1编程求解雷诺方程采用有限差分的五点差分格式,120120网格点计算。采用C语言编写求解轴承压力分布的程序,可以大大提高运行速度,节省计算时间…

巧用友盟+U-APM 实现移动端性能优化—启动速度

简介&#xff1a; 移动端性能对用户体验、留存有着至关重要的影响&#xff0c;作为开发者是不是被这样吐槽过&#xff0c;“这个 APP 怎么这么大&#xff1f;”、“怎么一直在 APP 封面图转悠&#xff0c;点不进去”、“进入详情效果有些卡”、“用 4G 使用你们的 APP&#xff…

第25版 OpenStack Yoga 已发布

OpenStack社区今日正式发布第25版-Yoga&#xff0c;该版本通过支持先进的硬件技术如SmartNIC DPUs&#xff0c;优化与云原生软件如Kubernetes、Prometheus等的集成以及减少技术债等方式来保持OpenStack内核的稳定性与可靠性。 OpenStack作为开源基础设施即服务&#xff08;Iaa…

项目实战总结以及接入U-APM

简介&#xff1a; 导致 App 性能低下的原因有很多&#xff0c;除去设备硬件和软件的外部因素&#xff0c;其中大部分是开发者错误地使用线、系统函数、编程范式、数据结构等导致的。即便是较有经验的程序员&#xff0c;也很难在开发时就能避免所有导致性能低下的“坑”&#xf…

oracle redo 200mb,Oracle的redo log在各场景下的恢复

Oracle的redo log非常重要&#xff0c;redo log损坏将导致数据库开法开启或数据丢失&#xff0c;针对redo log在各种场景下如何打开或恢复数据库&#xff0c;特别模拟测试说明&#xff1a;各场景包括如下(共6个场景):场景一.非归档下inactive状态的redo 恢复场景二.非归档下act…

站在原地就是退步——除了死磕通道,云通讯服务商还该做些什么?

受访嘉宾&#xff1a;吴佳钊&#xff0c;杭州云片网络科技有限公司联合创始人、CTO 当前&#xff0c;全球通信云已经步入2.0时代&#xff0c;最大的变化在于通信形式的变革&#xff1a;传统短信语音的通信形式将逐步向包括即时通讯IM实时音视频RTC的互联网通信转变。尤其在5G时…

Cube 技术解读 | 详解「支付宝」全新的卡片技术栈

简介&#xff1a; 魔方卡片&#xff08;Cube&#xff09;&#xff0c;让 App 首页实现敏捷更新。 CodeHub#7 正式落幕&#xff0c;来自蚂蚁集团的技术专家「京君」与掘金社区的开发者们分享了「支付宝」全新的卡片技术栈——魔方卡片&#xff08;Cube&#xff09;。 京君围绕 C…

庖丁解InnoDB之REDO LOG

简介&#xff1a; 数据库故障恢复机制的前世今生一文中提到&#xff0c;今生磁盘数据库为了在保证数据库的原子性(A, Atomic) 和持久性(D, Durability)的同时&#xff0c;还能以灵活的刷盘策略来充分利用磁盘顺序写的性能&#xff0c;会记录REDO和UNDO日志&#xff0c;即ARIES方…

oracle 取整点的数据,Oracle SQL语句操作数字:取整、四舍五入及格式化

用oracle sql对数字进行操作: 取上取整、向下取整、保留N位小数、四舍五入、数字格式化取整(向下取整)&#xff1a;select floor(5.534) from dual;select trunc(5.534) from dual;上面两种用法都可以对数字5.534向下取整&#xff0c;结果为5.如果要向上取整 &#xff0c;得到结…

Web 自动化神器,批量下载美图,可直接导入使用

‍‍作者 | 小碗汤来源 | 进击云原生今天为大家分享一款前端自动化操作神器: Automa。Automa介绍它是一款 Chrome 插件&#xff0c;即使你不会写代码&#xff0c;也能按照自己的需求&#xff0c;完成一系列自动化操作。利用它&#xff0c;你可以将一些重复性的任务实现自动化、…

RocketMQ 5.0 POP 消费模式探秘

简介&#xff1a; POP Consumer—使客户端无状态&#xff0c;更轻量&#xff01; 作者&#xff1a;凯易&耘田 前言&#xff1a;随着 RocketMQ 5.0 preview 的发布&#xff0c;5.0 的重大特性逐步与大家见面。POP Consumer 作为 5.0 的一大特性&#xff0c;POP 消费模式展现…