php curl host 设置访问指定主机

为了安全,我们的web服务主机往往不能上网。维护的时候,也是通过跳板机,ssh登录后去操作。

有时候我们的程序需要访问外网。比如需要调用外网其他程序的某个接口。这下该怎么办呢?

我们可以通过PHP的CURL函数的CURLOPT_HTTPHEADER来配置设置host访问。

在开发中,我遇到这样一个例子。

有一个活动程序,需要调用qzone那边的一个接口。

如下代码示例:

$host = array("Host: act.qzone.qq.com");
$data = ‘user=xxx&qq=xxx&id=xxx&post=xxx‘;
$url = ‘http://192.168.1.12/xxx/xxx/api/‘;
var_dump( $this->curl_post($host, $data,$url) );

/
* 提交请求
* @param $host array 需要配置的域名 array("Host: act.qzone.qq.com");
* @param $data string 需要提交的数据 ‘user=xxx&qq=xxx&id=xxx&post=xxx‘....
* @param $url string 要提交的url ‘http://192.168.1.12/xxx/xxx/api/‘;
*/
 function curl_post($host,$data,$url)
    {
       $ch = curl_init();
       $res= curl_setopt ($ch, CURLOPT_URL,$url);
       var_dump($res);
       curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
       curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
       curl_setopt ($ch, CURLOPT_HEADER, 0);
       curl_setopt($ch, CURLOPT_POST, 1);
       curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
       curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
       curl_setopt($ch,CURLOPT_HTTPHEADER,$host);
       $result = curl_exec ($ch);
       curl_close($ch);
       if ($result == NULL) {
           return 0;
       }
       TMDebugUtils::debugLog($result);
       return $result;
    }

通过PHP CURL CURLOPT_HTTPHEADER设置HOST很方便的解决了访问外网接口的问题。

时间: 2024-10-07 23:57:45

php curl host 设置访问指定主机的相关文章

【转】PHP curl CURLOPT_HTTPHEADER设置HOST

为了安全,我们的web服务主机往往不能上网.维护的时候,也是通过跳板机,ssh登录后去操作. 有时候我们的程序需要访问外网.比如需要调用外网其他程序的某个接口.这下该怎么办呢? 我们可以通过PHP的CURL函数的CURLOPT_HTTPHEADER来配置设置host访问. 在开发中,我遇到这样一个例子. 有一个活动程序,需要调用qzone那边的一个接口. 如下代码示例: $host = array("Host: act.qzone.qq.com"); $data = 'user=xxx

linux 指定从某个ip访问某个主机或网络

linux 指定从某个ip访问某个主机或网络 测试机A上有3个ip 分别为 eth0    192.168.1.34 eth0:1  192.168.1.36 eth1    192.168.1.35 首先在测试机B上开机apache access_log tail -f /etc/httpd/logs/access_log 接着在测试机A上访问B ,可以看到 192.168.1.34 - - [26/Aug/2014:02:54:24 +0800] "GET / HTTP/1.1"

xampp如何设置多虚拟主机访问

D:\xampp\htdocs\project\TPDev\abc 如果我想访问project/目录,地址栏:localhost/project是不是很麻烦?直接pj.com是不是更简单一点!直接进入操作步骤: 前提:1.会安装xampp 2.前两步是在关闭apache下进行的 1.添加httpd-vhosts.conf虚拟主机文件 打开文件,在最后添加一段话: <VirtualHost *:80>                            ServerName pj.com  

panabit怎么设置只允许访问指定的https网站?

panabit怎么设置只允许访问指定的https网站?流量控制里没有域名组,研究了半天没找到设置的地方,去官方论坛发帖子没人搭理! 经过研究可以通过ip禁止,得先解析出来https对应的ip(nslookup),加入IP群组,添加流量策略,最后一条全都禁止.貌似只能一条一条的加了. 网上搜索出来一个批处理解析域名的代码,挺好用的!添加到附件了. 批处理出处:http://www.bathome.net/thread-20715-1-1.html

linux下通过iptables只允许指定ip地址访问指定端口的设置方法

这篇文章主要介绍了linux下通过iptables只允许指定ip地址访问指定端口的设置方法,需要的朋友可以参考下. 首先,清除所有预设置 iptables -F#清除预设表filter中的所有规则链的规则 iptables -X#清除预设表filter中使用者自定链中的规则 其次,设置只允许指定ip地址访问指定端口 其次,设置只允许指定ip地址访问指定端口 iptables -A INPUT -s xxx.xxx.xxx.xxx -p tcp --dport 22 -j ACCEPT iptab

nginx中设置限制指定用户或IP组访问权限

在NGINX的配置中有时我们需要限制某一用户或者某个网段等访问指定内容,因此需要配置NGINX配置文件,设置方法如下: 网站:www.a.com  a网站我们设置限制192.168.26.70此IP访问: 网站: www.b.com 编辑配置文件:vim /etc/nginx/nginx.conf nginx.conf: server { listen 80; server_name www.a.com; root /data/www/a.com; index index.html index.

虚拟机中ip和host设置问题

朋友碰到一个问题,就是用virtualbox建了一个ubuntu的虚拟机,但虚拟机里面ip地址是自动生成的,主机和虚拟机无法互通信息.也无法在虚拟机里面建web服务器让外网访问. 解决方案: 很简单,在虚拟机network里面设置网络模式为 桥接模式(Bridged Adapter).ok~ 安装ssh服务: sudo apt-get install openssh-server  //默认ssh-client是自动装好的,安装server端,使得外面的主机可以ssh登陆进来 设置域名就简单了

iptables设置访问规则

一.简介 iptables是一个很强大的设置防火墙的工具,可以使用它来限制所有对本机的访问,允许特定的主机.特定的端口才能访问本机,还能设置那些协议能够访问本机.总之,很强大,也很简单. 二.filter chain原理简述 在开始之前,先看一下iptables的filter chain是如何工作的: 注释:当Input进来之后,先通过first chain,如果符合直接本机接收:不符合传给second chain,依次到最后一个chain,着了third不一定是最后的chain,在最后chai

Linux系统下授权MySQL账户访问指定数据库和数据库操作

Linux系统下授权MySQL账户访问指定数据库 需求: 1.在MySQL中创建数据库mydata 2.新建MySQL账户admin密码123456 3.赋予账户admin对数据库mydata具有完全操作权限 ====================================================================== 操作如下: 1.登录MySQL数据库 mysq  -uroot  -p    #在终端命令行输入 123456         #输入密码 2.sh