2012-12-09 5 views
1

Quelles sont les raisons pour lesquelles le serveur ne reconnaît pas le cookie que j'ai défini en utilisant WWW :: Mechanize dans le code ci-dessous?Le serveur ne voit pas les 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']); 

Comme vous pouvez le voir, le serveur exécute php. Si je mets dans ce script action.php:

var_dump($_COOKIE); 

Je vais obtenir un tableau vide de toute façon ... Merci pour toutes les suggestions.

Répondre

3

Essayez cette (période avant le nom de domaine supprimé):

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

cookies pour .example.com sont envoyés au serveur si vous accédez www.example.com, somehost.example.com et ainsi de suite, mais pas envoyé si vous accédez example.com. Cela est dû au fait que .example.com ne correspond pas example.com.

+0

merci, monsieur! tu as fait ma journée. – varnie