2012-12-09 45 views
1

服務器沒有真正識別我使用WWW :: Mechanize在下面的代碼中設置的cookie的原因是什麼?服務器沒有看到cookies

#!/usr/bin/perl 

use strict; 
use warnings; 
use HTTP::Cookies; 
use WWW::Mechanize; 

my $cookie_jar = HTTP::Cookies->new(
    file => "$ENV{'HOME'}/lwp_cookies.dat", 
    autosave => 1, 
    ignore_discard => 1 
); 

my $mech = WWW::Mechanize->new(
    agent => 'Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13', 
    cookie_jar => $cookie_jar 
); 

$mech->get("http://somesite.ru"); 

$cookie_jar->set_cookie(1, "__cookie", '1', "/", ".somesite.ru"); 

#the following line prints the cookie's data 
print $cookie_jar->as_string, "\n"; 

$mech->post("http://somesite.ru/action.php", 
    ['foo' => 'bar']); 

正如你所看到的服務器運行php。如果我把在action.php的腳本:

var_dump($_COOKIE); 

無論如何,我會得到一個空數組... 感謝您的所有建議。

回答

3

試試這個(時間段之前的域名刪除):

$cookie_jar->set_cookie(1, "__cookie", '1', "/", "somesite.ru"); 

餅乾爲.example.com被髮送到服務器,如果你訪問www.example.comsomehost.example.com等,但如果你訪問example.com發送。這是因爲.example.comexample.com不符。

+0

謝謝,先生!你讓我今天一整天都感覺很好。 – varnie

相關問題