php curl 301 无效 php curl 网页不自动跳转 php CURLOPT_FOLLOWLOCATION 选项无效的解决办法
【性价之王】 | 【线路之王】 | 【价格之王】 | 【配置之王】 |
【免费之王】 | 【香港首推】 | 【梯子之王】 | 【独服之王】 |
最近突然有同学反馈说微服务系统新用户无法绑定了,绑定功能是通过 curl 登录正方教务系统进行用户验证的,经过检查发现是因为新更换了服务器,程序 curl 登录正方教务系统时无法自动跳转链接。
在 php 中 curl 通过设置 CURLOPT_FOLLOWLOCATION 选项来设置是否自动跟随跳转链接,如果该选项为 true 或 1 则自动跳转,否则不会自动跳转。如果你是新开发的程序,那么首先检查 curl 代码中是否设置了 CURLOPT_FOLLOWLOCATION。
而我这里已经设置了 CURLOPT_FOLLOWLOCATION 为 true,之前也是好用的,那么初步怀疑是服务器中某些设置不兼容导致的。
经过查阅资料发现 php 中 curl 确实有一个 bug,那就是当服务器开启了安全模式或设置了 open_basedir 时,CURLOPT_FOLLOWLOCATION 配置是不起作用的,一些服务器设置的放跨站攻击就是通过 open_basedir 实现的。知道了原因就好办了,这里提供两种解决方案:
方案一:
关闭服务器安全模式或者 open_basedir 设置,这是最简单的做法,不过很多时候我们无法修改服务器的这些设置,那么请看方案二。
方案二:
使用下面的自定义函数执行 curl
function curlExec($curlOptions='', $curlHeaders='', $postFields='') { $newUrl = ''; $maxRedirection = 10; do { if ($maxRedirection<1) die('Error: reached the limit of redirections'); $ch = curl_init(); if (!empty($curlOptions)) curl_setopt_array($ch, $curlOptions); if (!empty($curlHeaders)) curl_setopt($ch, CURLOPT_HTTPHEADER, $curlHeaders); if (!empty($postFields)) { curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_POSTFIELDS, $postFields); } if (!empty($newUrl)) curl_setopt($ch, CURLOPT_URL, $newUrl); // redirect needed $curlResult = curl_exec($ch); $code = curl_getinfo($ch, CURLINFO_HTTP_CODE); if ($code == 301 || $code == 302 || $code == 303 || $code == 307) { preg_match('/Location:(.*?)n/', $curlResult, $matches); $newUrl = trim(array_pop($matches)); curl_close($ch); $maxRedirection--; continue; } else // no more redirection { $code = 0; curl_close($ch); } } while($code); return $curlResult; }
[永久免费VPS 香港VPS]历史优惠活动内容
猜你可能想看的VPS
- CN2 GIA $34.5 年 768M 内存 35G 硬盘 600G 全球[VPS测评]
- $4.8 首月 2G 内存 25G SSD 200Mbps@不限流量 K全球[VPS测评]
- Ubuntu 下通过 Wine 安装 uTorrent全球[VPS测评]
- 新商家慎重-伏羲→19.2 月 1GB 内存 40GB SSD 硬盘 不全球[VPS测评]
- javascript 在新窗口中打开连接全球[VPS测评]
- tmhhost→香港 cn2 服务器(物理机) 400 元 月 X345香港VPS[主机]
- CrownCloud→$7 月 4 核 4GB 内存 60GB SSD 虚拟空间(主机)
- HostXen 充 500 送 50 充 600 送 100 香港&日本日本VPS[主机]
- mysqldump: Got error: 1044: ***when 全球[VPS测评]
- RAKsmart→圣何塞 VPS 年付 19.9 美元起 100M 服务全球[VPS测评]
- NPM 依赖包版本号~和^的区别全球[VPS测评]
- Laravel 报错 Call to undefined functio全球[VPS测评]
- 免费主机 Virmach 推出永久免费虚拟主机全球[VPS测评]
- 疯狂猜成语 图猜成语一个人端着叠好的衣服想着一个全身补丁的老人是什么成语全球[VPS测评]
- Biznetgio-11$ 月 印尼 高端云计算平台 最高10Gbps 全球[VPS测评]
- LiteServer-黑色星期五至网络星期一优惠 更新 NVME 和存储全球[VPS测评]
- CloudCone 512M 内存 10G SSD 512G流量 洛杉矶全球[VPS测评]
- idc.wiki 1核心 1G内存 15G SSD 700G流量 30M全球[VPS测评]
- 云计算的三种服务模式,SaaS和PaaS的区别在哪里?全球[VPS测评]
- 因搜包耽误员工下班,苹果将支付3050万美元赔款全球[VPS测评]
- 全球云lovps,香港CN2线路vps 新品七折月付49元香港VPS[主机]
- 加拿大以“国安”为由禁止华为、中兴参与5G建设全球[VPS测评]
- 青果云怎么样?美国/香港/日本云主机 买多久送多久日本VPS[主机]
- 香港vps免费:青云互联,1核1G/50G硬盘/500GB流量/2M带宽香港VPS[主机]
- 做跨境电商一个月都有多少收入?全球[VPS测评]
- 外贸无界烟台市有多少跨境电商?烟台跨境电商开发平台,烟台跨境电商选品全球[VPS测评]
- 青果云怎么样?美国/香港/日本云主机 买多久送多久日本VPS[主机]
- 磐逸云:深圳/大连/成都/香港机房vps,1核1G3M仅26元/月,65香港VPS[主机]
- 初忆云:湖北电信云服务器1核2G仅6.8/月,81.6元/年;香港cn2香港VPS[主机]
- Vmshell:香港数据中心200MB/S大带宽vps,庆典活动(3日内香港VPS[主机]
转载请注明原文地址:https://www.motoll.com/read-211468.html