好的,我使用cUrl将2个字段发布到网址,此页面会检查我的帖子字段,并根据它们返回给我cookie。然而,在我甚至可以阅读cookie之前,我已经将其重定向到另一页
我尝试设置_FOLLOWLOCATION,0但我仍然被重定向。对此有何想法?
代码:
$headers[] = "Accept: */*";
$headers[] = "Connection: Keep-Alive";
$headers[] = "Content-type: application/x-www-form-urlencoded;charset=UTF-8";
$fields_string = "login_url=/login.do?school=windesheim";
$fields_string=rtrim($fields_string, "&");
$cSession = curl_init();
$tmpfname = dirname(__FILE__).'/cookie2.txt';
curl_setopt($cSession, CURLOPT_REFERER, "https://website.com/login.do?error=nomandant");
curl_setopt($cSession, CURLOPT_HTTPHEADER, $headers)
curl_setopt($cSession, CURLOPT_COOKIEFILE, $tmpfname);
curl_setopt($cSession, CURLOPT_COOKIEJAR, $tmpfname);
curl_setopt($cSession,CURLOPT_URL,"https://website.com/j_spring_security_check");
curl_setopt($cSession,CURLOPT_RETURNTRANSFER,true);
curl_setopt($cSession, CURLOPT_FOLLOWLOCATION, 0);
curl_setopt($cSession, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($cSession, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($cSession,CURLOPT_HEADER, true);
curl_setopt ($cSession, CURLOPT_POST, true);
curl_setopt ($cSession, CURLOPT_POSTFIELDS, $fields_string);
curl_setopt($cSession,CURLOPT_USERAGENT,'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.13) Gecko/20080311 Firefox/2.0.0.13');
$result=curl_exec($cSession);
curl_close($cSession);
echo htmlspecialchars($result);
如果我打印标题,则说明位置:https://website.com/login.do?error=nomandant
所以我转到此页面,我无法获取cookie,因为我被重定向到下一页,然后将我重定向回第一页,因为我没有设置cookie。 我想进入第一页,不要重定向,并从标题中读取cookie 为什么即使将followlocation设置为0 / false,我也被重定向?
更新:
当我在我的浏览器在website.com并且我在postfield中输入Windesheim并将其发布时将其发布到/ j_spring_security_check
所以我尝试使用cUrl使用上面的代码来模拟这个(更新了更多信息)。但输出只是:
HTTP/1.1 302 Found Connection: Keep-Alive Content-Length: 0
Date: Sat, 16 Nov 2013 14:28:33 GMT
Location: https://website.com/login.do?error=nomandant Server: Apache-Coyote/1.1
预期结果类似于上图中的响应标题 因此,将我重定向到
会出现问题/login.do?error=nomandant
而不是
/index.do;jsessionid=etc.
但我无法弄清楚我做错了什么,因为只发布了2个字段,我将它们都包含在我的代码中。
答案 0 :(得分:1)
首先,请注意,在使用curl_close关闭会话后,您将能够阅读Cookie。
请参阅http://php.net/manual/en/function.curl-setopt.php
从你说的实际上你被服务器重定向到另一个位置,但curl 没有关注那个位置。这就是您看到带有重定向的标头的原因。
curl表现得如预期!
如果您将其设置为关注新位置,则会看到黑客和新位置的页面 https://website.com/login.do?error=nomandant
根据您发布到网址的数据,服务器希望将您发送回https://website.com/login.do?error=nomandant
如果这不是您所期望的,那么您随请求发送的Cookie不好(例如缺少会话值...)或者您发布的数据错误。