php 为Guzzle CookieJar设置cookies

ybzsozfc  于 2022-11-28  发布在  PHP
关注(0)|答案(3)|浏览(225)

我正在用PHP对一个需要身份验证的站点进行单元测试。身份验证是基于cookie的,所以我需要能够将这样的cookie放入cookie jar中:

[ 'user_token' => '2c26b46b68ffc68ff99b453c1d30413413422d706483bfa0f98a5e886266e7ae' ]

然后,Web应用程序可以将此已知的良好令牌用于测试数据,并且将能够在测试条件下进行身份验证,以与数据装置交互。
此外,它必须是一个安全的cookie,我(显然)需要设置域。
问题是:我不知道如何制作和放置这种饼干,并把它放在jar里。你怎么做呢?

i34xakig

i34xakig1#

The source code提供了我需要的答案。
CookieJar类提供了一个从关联数组生成cookie的方法。例如:

$domain = 'example.org';
$values = ['users_token' => '2c26b46b68ffc68ff99b453c1d30113413422d706483bfa0f98a5e886266e7ae'];

$cookieJar = \GuzzleHttp\Cookie\CookieJar::fromArray($values, $domain);

$client = new \GuzzleHttp\Client([
    'base_uri' => 'https://example.org',
    'cookies'  => $cookieJar 
]);
kpbwa7wx

kpbwa7wx2#

简单的例子。这段代码将cookie保存在一个文件中,并在下次执行脚本时重新加载它。

use GuzzleHttp\Client;
use GuzzleHttp\Cookie\FileCookieJar;

// file to store cookie data
$cookieFile = 'cookie_jar.txt';

$cookieJar = new FileCookieJar($cookieFile, TRUE);

$client = new Client([ 
  'base_uri' => 'http://example.com',
  // specify the cookie jar
  'cookies' => $cookieJar
]);

// guzzle/cookie.php, a page that returns cookies.
$response = $client->request('GET', 'simple-page.php');

会话cookie不会自动存储。要存储php会话cookie,我们必须将第二个参数设置为TRUE。

$cookieJar = new FileCookieJar($cookieFile, TRUE);

参考文献
http://www.ryanwright.me/cookbook/guzzle/cookie

ykejflvf

ykejflvf3#

我正在寻找一个解决方案,我需要一种方法来收集重定向的cookie,同时开始与我自己的一套多域支持的cookie.

$cookies = [
   [
      'Name' => 'users_token', 
      'Value' => '2c26b46b68ffc68ff99b453c1d30113413422d706483bfa0f98a', 
      'Domain' => 'domain.com'
   ],
   [
      'Name' => 'session_id', 
      'Value' => '8ff99b453c1d3011341342', 
      'Domain' => 'domain.com'
   ],
   [
      'Name' => 'session_id', 
      'Value' => '8ff99b453c1d3011341342', 
      'Domain' => 'domain.us'
   ],
];

$jar = new \GuzzleHttp\Cookie\CookieJar(false, $cookies);

$client = new \GuzzleHttp\Client([
    'base_uri' => 'https://example.org',
    'cookies'  => $jar 
]);

我没有找到它的文档,我找到了构造函数的可选参数,并决定给予。不确定这是否是一个好的做法,但它对我的情况下工作。
使用狂饮7.4

相关问题