1

我尝试使用 cUrl 发布 json-data 登录,服务器响应登录成功,但它没有将会话写入 cookie,我的代码:

<?php
$json_url = 'https://www.site.com/Login';
$json_string = '{"username":"user","password":"12345"}';

$ch = curl_init( $json_url );

$options = array(
CURLOPT_HEADER => true,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => array('Content-type: application/json;  charset=utf-8') ,
CURLOPT_POSTFIELDS => $json_string
);

curl_setopt_array( $ch, $options );

$result =  curl_exec($ch); // Getting jSON result string
echo $result;
?>

我看到需要在标题中写入的 cookie,但它们没有写入我的浏览器。

4

2 回答 2

1

使用服务器端 curl 请求创建的 cookie 无法发送到浏览器。您不能为运行脚本的域以外的域设置 cookie。例如,您不能让您的 PHP 代码登录到 facebook,然后将 facebook 会话令牌传回给用户,并让它在实际的 facebook 站点上可用。如果您尝试,您会发现浏览器确实使用您设置的名称/值设置了一个 cookie,但它将仅限于的站点,而不是 facebook.com

于 2013-02-01T14:55:32.640 回答
1

您需要添加 cookie 文件才能保存和读取它们:

curl_setopt($s,CURLOPT_COOKIEJAR,"ciasteczka.txt"); 
curl_setopt($s,CURLOPT_COOKIEFILE,"ciasteczka.txt");

(ciasteczka 在波兰语中是饼干)

于 2013-02-01T14:57:09.623 回答