2017-05-29 10 views
1

ウェブサイトにログインしてクエリを実行する必要があります。このWebサイトはASP.NET MVCで書かれており、ユーザーを識別するために2つのクッキーが必要です。私はPHPのカールを使用して1つのクッキーを保存することができますが、もう1つの.AspNet.ApplicationCookie(〜400KBの大きさ)は保存できません!ここでPHP curlがASP.net MVCで生成されたクッキーを保存できません

は私のコードです:

$ch = curl_init('MY URL...'); 
$cookie = __DIR__ . '/cookie.txt'; 
curl_setopt($ch, CURLOPT_HEADER, true); 
curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Ubuntu Chromium/32.0.1700.107 Chrome/32.0.1700.107 Safari/537.36'); 
curl_setopt($ch, CURLOPT_POST, true); 
curl_setopt($ch, CURLOPT_POSTFIELDS, "UserName=123&Password=123"); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); 
curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie); 
curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie); 
$result = curl_exec($ch); 
var_dump($result); 
+0

cookie.txtファイルはどうなりますか?空のままですか?私は 'CURLOPT_COOKIESESSION'パラメータを追加する必要があると思います。例:curl_setopt($ ch、CURLOPT_COOKIESESSION、true);それが動作しない場合は、cookie.txtファイルのアクセス許可を確認してください。間違った権限のために、PHPがファイルに書き込めないことがあります。 – Sander

+0

私のcookie.txtは空ではありません。それは、クッキーのすべての情報を持っています!私はCURLOPT_COOKIESESSIONオプションを試しましたが、まだ喜びはありません! –

答えて

0

私はASP.netは、トークン・フィールド(「__RequestVerificationToken」として隠されたテキスト入力)を使用しているCSRF攻撃を回避するためのメカニズムを使用して、解決策を見つけたとのクッキー"__RequestVerificationToken"と同じページですが、これらのトークンは異なる値を持ちますが、互いに関連していますので、PHP cURLを使用してリモートログインするためには、これらの値を同時にフェッチし、 __RequestVerificationTokenフィールドを取得し、別の時間にCookieを取得した場合、ASP.netはこれを攻撃と見なし、ログインに失敗するCookieとフィールドの両方の値を変更します。

関連する問題