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
- 疯狂猜成语 图猜成语一个老人旁边一个红色的叉一个绿色的问号是什么成语?全球[VPS测评]
- 大硬盘 VPS $2.25 每月 1G 内存 100G 硬盘 5T 月流全球[VPS测评]
- Justhost→俄罗斯 KVM 月付 12 元起 200M~1G 无限全球[VPS测评]
- 文件夹选项在哪?文件夹选项怎么打开?全球[VPS测评]
- 高防服务器 98 美元每月 E3-1270v2 16G 内存 1G 端口全球[VPS测评]
- 促销 极光 KVM→4 月新增日本东京 CN2 产品 美国洛杉矶双向 C日本VPS[主机]
- 便宜 腾讯云 88 元 年的 1G 云服器又开卖了 每天 4 场秒杀 场全球[VPS测评]
- CloudCone→$3 月 KVM-1GB 20GB 1TB 洛杉矶 全球[VPS测评]
- 按时计费 $3.5 月 1G 内存 15G SSD 1TB 流量@1Gb全球[VPS测评]
- ThinkPHP5 动态创建数据表方法全球[VPS测评]
- 限时秒杀 腾讯云助力复工→1 核 2G 50G 硬盘 1Mbps 三年付全球[VPS测评]
- CN2 GIA ¥19.99 月 256M 内存 5G SSD 256G全球[VPS测评]
- web-project→£30 年 2GB 内存 20GB SSD 空间虚拟空间(主机)
- 私有文档、源码、软件目录列表程序:Zdir全球[VPS测评]
- PacificRack便宜VPS促销 2核4G/50G纯SSD硬盘/2个全球[VPS测评]
- Buyvm frantech-$3.5 月 1G内存 20G 硬盘 便宜美国VPS[主机]
- NicoVM → 618 促销小鸡评测全球[VPS测评]
- 微基(idc.wiki)建站虚拟主机二折优惠全球[VPS测评]
- 什么是Bootstrap?全球[VPS测评]
- 快速云:vps云服务器的区别是什么?2022-08-1913:32来源:全球[VPS测评]
- 福州职业技术学院获得世界职业院校技能大赛云计算赛项银牌全球[VPS测评]
- 麻花云怎么样?安徽移动VPS月付29元 香港VPS 2M月付21元香港VPS[主机]
- CombCloud,香港沙田cn2vps终身七折起,高质量网络稳定低延迟香港VPS[主机]
- 深圳市城市交通规划设计研究中心股份有限公司关于与腾讯云计算(北京)有限责全球[VPS测评]
- 咖啡主机怎么样?咖啡香港/美国/法国VPS主机价格及配置推荐美国VPS[主机]
- 印象云,香港安畅CN2VPS终身8折1核1G22元/月,美国CN2高防V美国VPS[主机]
- 缓解云计算人才焦渴,苏州工业园区用三年引得源头活水来全球[VPS测评]
- 云计算竞争日趋白热化云计算行业市场前景分析全球[VPS测评]
- UCloud快杰型海外云主机:可选香港/上海/北京/日本/新加坡/韩国/日本VPS[主机]
- 虾皮跨境电商怎么样?虾皮跨境电商靠谱吗?全球[VPS测评]
转载请注明原文地址:https://www.motoll.com/read-208516.html