PHP通过POST请求API遇403错误及CORS相关疑问排查
问题分析与解决
主要问题:URL协议错误
你的PHP代码里用的是http协议的地址,但目标API实际是https协议,这会触发服务器把请求重定向到HTTPS地址。curl默认不会自动跟进重定向,而且重定向过程中可能丢失POST参数或者认证头,最终导致403禁止访问。
修复方法
- 直接使用HTTPS URL
把代码里的URL改成https://fromero-marca-blanca.deno.dev/api/cuestionario,跳过重定向步骤,直接访问正确的地址。修改后的代码片段:
$url = "https://fromero-marca-blanca.deno.dev/api/cuestionario";
- 可选:开启curl自动重定向
如果需要兼容重定向场景,可以添加以下curl选项,让它自动跟进重定向并保留请求信息:
curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true); curl_setopt($curl, CURLOPT_MAXREDIRS, 3); // 限制重定向次数,防止死循环
- 验证令牌权限
如果改完URL还是403,要确认你的Bearer令牌d8TPqowoqP7CGAzVCy3SJykcZ83fVWl0是否有效、没过期,并且拥有访问该API的权限。
关于CORS的说明
CORS是浏览器的安全机制,只限制浏览器发起的请求。你的PHP代码是在服务器端通过curl调用API,完全不受CORS规则影响,所以这不是导致你当前错误的原因。
内容的提问来源于stack exchange,提问作者Caín
相关产品推荐
相关产品推荐

