php-curl发送GET而不是POST
作者:互联网
实际上,它变得太凌乱了,我什至不确定卷曲是否是罪魁祸首.因此,这是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;
我得到标题(与正常的成功请求的标题相匹配),然后是登录页面(我猜是由于重定向,curl捕获了它),其结果是“错误的联系人类型”的错误.
我以为问题是请求已将主机设置为请求服务器,而不是远程服务器,但后来我注意到(在Firebug中),请求是作为GET发送的,而不是POST.
如果我复制登录站点的表单,将其简化为带有值的表单元素,然后放置操作的完整URL,则效果很好.因此,我认为这不是一个必须在同一服务器上发起登录请求的安全问题.(我什至摆脱了空的隐藏值和设置了其他cookie的所有JS).
再说一次,我很快就感到困惑.
有什么想法为什么它显示为GET或为什么不起作用?
解决方法:
在对整个类与PHP-cURL相关的问题进行故障排除时,只需打开CURLOPT_VERBOSE并为CURLOPT_STDERR提供文件句柄.
将文件尾-f,将标头和响应与您在Firebug中看到的标头和响应进行比较,问题应该会变得清楚.
标签:forms,curl,http-post,server-side,php 来源: https://codeday.me/bug/20191107/2003749.html