我已在我的计算机上设置了端口转发,以便将任何localhost:8181
流量转发到我的计算机上运行的VM上的端点。
为了这个问题,端点只运行以下PHP代码
<?php
error_log('Loaded');
?>
现在,如果我转到浏览器并点击localhost:8181
,代码将会运行,我会在错误日志中看到“已加载”。
但是,如果我在终端中使用curl卷曲端点,我可以看到我使用curl -v
重定向到页面但是'Loaded'永远不会记录错误,这意味着PHP代码不是触发。
原因是什么,是否有解决方案?
答案 0 :(得分:1)
如果您的服务器进行了重定向,那么您正在寻找的curl选项为-L
来自男人
-L, - location
(HTTP / HTTPS)如果服务器报告所请求的页面已移至其他位置(使用Location:标题表示) 和3XX响应 代码),此选项将使curl重做新地点的请求。如果与-i, - include或-I, - head,header一起使用 所有要求 页面将显示。使用身份验证时,curl仅将其凭据发送到初始主机。如果重定向需要卷曲 一个不同的主人, 它将无法拦截用户+密码。另请参阅--location-trusted有关如何更改此信息。您可以限制要遵循的重定向数量 使用--max-redirs选项。
当curl遵循重定向并且请求不是普通的GET(例如POST或PUT)时,它将执行以下请求: 如果是HTTP,请获取 响应是301,302或303.如果响应代码是任何其他3xx代码,curl将使用以下代码重新发送以下请求 同样未经修改 方法
您可以通过使用专用选项告诉curl在30x响应后不将非GET请求方法更改为GET: --post301, - post302 和-post303。