php通过header发送自定义数据方法


Posted in PHP onJanuary 18, 2018

本文将介绍如何通过header发送自定义数据。发送请求时,除了可以使用$_GET/$_POST发送数据,也可以把数据放在header中传输过去。

发送header:

我们定义了三个参数,tokenlanguageregion,放入header发送过去

<?php
$url = 'http://www.example.com';
$header = array('token:JxRaZezavm3HXM3d9pWnYiqqQC1SJbsU','language:zh','region:GZ');
$content = array(
    'name' => 'fdipzone'
);
$response = tocurl($url, $header, $content);
$data = json_decode($response, true);
echo 'POST data:';
echo '<pre>';
print_r($data['post']);
echo '</pre>';
echo 'Header data:';
echo '<pre>';
print_r($data['header']);
echo '</pre>';
/**
 * 发送数据
 * @param String $url   请求的地址
 * @param Array $header 自定义的header数据
 * @param Array $content POST的数据
 * @return String
 */
function tocurl($url, $header, $content){
  $ch = curl_init();
  if(substr($url,0,5)=='https'){
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); // 跳过证书检查
    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, true); // 从证书中检查SSL加密算法是否存在
  }
  curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
  curl_setopt($ch, CURLOPT_URL, $url);
  curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
  curl_setopt($ch, CURLOPT_POST, true);
  curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($content));
  $response = curl_exec($ch);
  if($error=curl_error($ch)){
    die($error);
  }
  curl_close($ch);
  return $response;
}
?>

接收header

我们可以在$_SERVER中获取header数据,自定义的数据都是使用HTTP_作为前缀的,所以可以把HTTP_前缀的数据读出。

<?php
$post_data = $_POST;
$header = get_all_headers();
$ret = array();
$ret['post'] = $post_data;
$ret['header'] = $header;
header('content-type:application/json;charset=utf8');
echo json_encode($ret, JSON_UNESCAPED_UNICODE|JSON_PRETTY_PRINT);
/**
 * 获取自定义的header数据
 */
function get_all_headers(){
  // 忽略获取的header数据
  $ignore = array('host','accept','content-length','content-type');
  $headers = array();
  foreach($_SERVER as $key=>$value){
    if(substr($key, 0, 5)==='HTTP_'){
      $key = substr($key, 5);
      $key = str_replace('_', ' ', $key);
      $key = str_replace(' ', '-', $key);
      $key = strtolower($key);
      if(!in_array($key, $ignore)){
        $headers[$key] = $value;
      }
    }
  }
  return $headers;
}
?>

输出:

POST data:
Array
(
  [name] => fdipzone
)
Header data:
Array
(
  [token] => JxRaZezavm3HXM3d9pWnYiqqQC1SJbsU
  [language] => zh
  [region] => GZ
)

以上这篇php通过header发送自定义数据方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

PHP 相关文章推荐
关于php mvc开发模式的感想
Jun 28 PHP
PHP使用imagick读取PDF生成png缩略图的两种方法
Mar 20 PHP
Linux中用PHP判断程序运行状态的2个方法
May 04 PHP
php 问卷调查结果统计
Oct 08 PHP
PHP远程调试之XDEBUG
Dec 29 PHP
Zend Framework动作助手Json用法实例分析
Mar 05 PHP
yii2 页面底部加载css和js的技巧
Apr 21 PHP
php微信公众平台开发之微信群发信息
Sep 13 PHP
浅谈socket同步和异步、阻塞和非阻塞、I/O模型
Dec 15 PHP
PHP编程实现计算抽奖概率算法完整实例
Aug 09 PHP
apache集成php7.3.5的详细步骤
Jun 20 PHP
PHP 使用位运算实现四则运算的代码
Mar 09 PHP
PHP实现从上往下打印二叉树的方法
Jan 18 #PHP
PHP获取链表中倒数第K个节点的方法
Jan 18 #PHP
PHP获取二叉树镜像的方法
Jan 17 #PHP
PHP实现按之字形顺序打印二叉树的方法
Jan 16 #PHP
PHP实现可添加水印与生成缩略图的图片处理工具类
Jan 16 #PHP
PHP实现找出链表中环的入口节点
Jan 16 #PHP
详解thinkphp中的volist标签
Jan 15 #PHP
You might like
从C/C++迁移到PHP——判断字符类型的函数
2006/10/09 PHP
PHP框架Laravel中使用UUID实现数据分表操作示例
2018/05/30 PHP
JS中style属性
2006/10/11 Javascript
页面中iframe相互传值传参
2009/12/13 Javascript
JS延迟加载(setTimeout) JS最后加载
2010/07/15 Javascript
jQuery实现原理的模拟代码 -6 代码下载
2010/08/16 Javascript
改进UCHOME的记录发布,增强可访问性用户体验
2011/01/17 Javascript
jquery的相对父元素和相对文档定位示例代码
2013/08/02 Javascript
jQuery.extend()、jQuery.fn.extend()扩展方法示例详解
2014/05/08 Javascript
再谈Jquery Ajax方法传递到action(补充)
2014/05/12 Javascript
jquery如何获取元素的滚动条高度等实现代码
2015/10/19 Javascript
谷歌Chrome浏览器扩展程序开发小记
2016/01/06 Javascript
JS获取鼠标相对位置的方法
2016/09/20 Javascript
从0开始学Vue
2016/10/27 Javascript
vue2 前后端分离项目ajax跨域session问题解决方法
2017/04/27 Javascript
Vue动态实现评分效果
2017/05/24 Javascript
基于Require.js使用方法(总结)
2017/10/26 Javascript
swiper自定义分页器使用方法详解
2020/09/14 Javascript
vuex state及mapState的基础用法详解
2018/04/19 Javascript
详解angular部署到iis出现404解决方案
2018/08/14 Javascript
JS实现json数组排序操作实例分析
2019/10/28 Javascript
vue项目中企业微信使用js-sdk时config和agentConfig配置方式详解
2020/12/15 Vue.js
酷! 程序员用Python带你玩转冲顶大会
2018/01/17 Python
python将txt文件读入为np.array的方法
2018/10/30 Python
python 中pyqt5 树节点点击实现多窗口切换问题
2019/07/04 Python
Python字符编码转码之GBK,UTF8互转
2020/02/09 Python
Python如何脚本过滤文件中的注释
2020/05/27 Python
pycharm远程连接vagrant虚拟机中mariadb数据库
2020/06/05 Python
Python读取多列数据以及用matplotlib制作图表方法实例
2020/09/23 Python
jupyter notebook更换皮肤主题的实现
2021/01/07 Python
HTML5 canvas基本绘图之绘制五角星
2016/06/27 HTML / CSS
vue项目实现分页效果
2021/03/24 Vue.js
硕士研究生自我鉴定范文
2013/12/27 职场文书
给儿子的表扬信
2014/01/15 职场文书
运动会方队口号
2014/06/07 职场文书
Python数据分析之绘图和可视化详解
2021/06/02 Python