PHP CURL指定host内网通信

本文涉及的产品
云解析 DNS,旗舰版 1个月
全局流量管理 GTM,标准版 1个月
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
简介: PHP CURL指定host内网通信

场景是这样的

小马假设A服务器放置了web站点如xx.xx.com,B服务器放置了需要访问A服务的API接口如xx.xx.com/api/userList。两台服务器都位于同一内网中。

A的IP为9.140.130.150,B的IP为9.140.130.151。此时如果B要发起对api访问,当然是直接CURL到地址xx.xx.com/api/userList,爽歪歪。但是如果要求内网通信呢?于是,就是9.140.130.150/api/userList,那么会发生什么?无法解析。因为web站点目录绑定了域名(如nginx配置),此时直接使用IP可能无法解析。那好办,改成xx.xx.com/api/userList调用呗。咦,好像哪里不对,这不又是回到外网方式访问么?一般是域名会先被DNS解析到外网IP。于是想起了我们本地开发时候使用的host配置。我们在B服务器配置域名的HOST?显然不合理。

那这个怎么搞?有没有最方便的解决方式。

CURL指定host内网通信

先来看一下PHP的CURL函数。注意PHP的curl是一个函数系列。

特别注意这两个函数。
image.png

我们注意到这里可以设置curl的各种请求参数,包括header请求头参数。
image.png

于是我们直接调用内网IP解决内网通信问题,用指定访问的host解决站点域名解析问题。参考代码如下:
image.png

于是我们怎么使用它呢?

$Data = ['id'=>1, 'name'=>'小马'];

curlHost('http://9.140.130.150/api/userList', $Data, 'Get');

这样就OK了。

附上CURL封装代码示例:

image.png

彩蛋时间:

1、如果获取通过header请求头参数传递的数据?

如PHP服务端取请求头参数Authorization,$_SERVER['HTTP_AUTHORIZATION']。

如果取body里的呢?$bodyData = @file_get_contents('php://input'); $bodyData = json_decode($bodyData,true); //将获取到的值转化为数组格式

2、为什么我们平时用$_POST就能取到body中的数据呢?如下:
image.png

开心一刻:
image.png

相关文章
|
5月前
|
JSON PHP 数据格式
PHP curl方法封装
PHP curl方法封装
78 0
|
4月前
|
PHP
php使用curl新增微信临时素材(上传图片)
php使用curl新增微信临时素材(上传图片)
205 4
|
4月前
|
JSON PHP 数据格式
蓝易云 - PHP用CURL发送Content-type为application/json的POST请求方法
在这段代码中,我们首先创建了一个包含我们要发送的数据的数组,并使用 `json_encode`函数将其转换为JSON格式。然后,我们初始化了一个cURL会话,并设置了一些选项,包括POST请求方法、要发送的数据、返回结果和HTTP头部信息。最后,我们执行了cURL请求并关闭了会话。
111 2
|
4月前
|
Web App开发 API PHP
PHP封装的不错的一个Curl方法
This is a PHP function named `teacher_curl` that wraps around the cURL library for making HTTP requests. The function initializes a cURL session, sets various options such as disabling SSL verification, sets headers, handles POST data
115 0
|
4月前
|
网络协议 Linux API
php curl执行太慢解决
网站访问快速,但API接口由curl_exec调用时遭遇显著延迟。问题根源在于DNS配置不当。切换至常用DNS,如114.114.114.114,立即提升了接口响应速度。
123 0
|
5月前
|
PHP
php curl获取cookie
php curl获取cookie
37 0
|
5月前
|
PHP 数据格式
PHP 中的CURL 模拟表单的post提交
PHP 中的CURL 模拟表单的post提交
76 0
|
JSON PHP 数据格式
PHP curl方法封装
PHP curl方法封装
85 0
|
PHP
php函数file_get_contents无法获取到https链接内容问题使用curl的解决方案
php函数file_get_contents无法获取到https链接内容问题使用curl的解决方案
140 0