卷曲发送GET而不是POST的
-
11-09-2019 - |
题
其实,它变得如此混乱的,我甚至不能确定卷曲的罪魁祸首。所以,这里的PHP:
$creds = array(
'pw' => "xxxx",
'login' => "user"
);
$login_url = "https://www.example.net/login-form"; //action value in real form.
$loginpage = curl_init();
curl_setopt($loginpage, CURLOPT_HEADER, 1);
curl_setopt($loginpage, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($loginpage, CURLOPT_URL, $login_url);
curl_setopt($loginpage, CURLOPT_POST, 1);
curl_setopt($loginpage, CURLOPT_POSTFIELDS, $creds);
$response = curl_exec($loginpage);
echo $response;
我得到的报头(符合正常的,成功的请求的标头,其),接着登录页面(我猜卷曲捕获在这个由于重定向),其具有的误差为“不良接触型的效果”
我认为,问题是,该请求必须在主机设置为请求服务器,而不是在远程服务器,但然后我注意到(萤火虫),该请求被发送作为GET,POST不
如果我复制登录网站的形式,剥离下来到刚刚与价值观的表单元素,并把完整的URL的行动,它的工作好了。所以,我觉得这不是一个安全问题,即登录请求已发起在同一台服务器,等上(我甚至摆脱空隐藏值和所有设置一些其他的cookie JS的)。
再然后,我会感到困惑很快。
任何想法,为什么它显示为GET,或者为什么它不工作,对于这个问题?
解决方案
在故障排除整个班级的PHP卷曲有关的问题,你只需要打开CURLOPT_VERBOSE,给CURLOPT_STDERR文件句柄。
tail -f
您的文件,比较头和响应您在Firebug中看到的,这个问题应该很清楚。
其他提示
在请求从服务器制成,并且在萤火虫将不会显示。 (你可能与你的浏览器另一个请求混淆它)。使用 Wireshark的找出到底发生了什么。您没有设置CURLOPT_FOLLOWLOCATION
;重定向不应遵循。
总结:猜以下,发布更多。链接到PCAP转储,我们将能够告诉你在做什么错误的;或张贴PHP脚本的精确输出,我们可能。
在所示代码执行多部分formpost(因为你传递散列阵列到POSTFIELDS选项),这可能也不是什么目标服务器所期望的。
尝试在端在print_r(curl_getinfo($loginpage))
投掷,看什么的报头数据被发送回作为
另外,如果你试图伪装,你从他们的网站,你会记录到要确保您发送正确引用您的文章,让他们“想”你是在网站上,当你寄的。