1

以下のコードで WWW::Mechanize を使用して設定した Cookie をサーバーが実際に認識しない理由は何ですか?

#!/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); 

とにかく空の配列を取得します...すべての提案に感謝します。

4

1 に答える 1

3

これを試してください(ドメイン名が削除される前の期間):

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

の Cookie は、など.example.comにアクセスするとサーバーに送信されますが、 にアクセスしても送信されません。が一致しないためです。www.example.comsomehost.example.comexample.com.example.comexample.com

于 2012-12-09T15:35:29.860 に答える