Php 如何在不设置_csrfcookie的情况下获取Yii中的CSRF令牌?

Php 如何在不设置_csrfcookie的情况下获取Yii中的CSRF令牌?,php,cookies,yii2,Php,Cookies,Yii2,如何在不设置\u CSRF令牌的情况下以Yii获取CSRF令牌?我尝试了很多东西,但都不管用。每次我尝试访问CSRF令牌时,它都会设置一个cookie <?//= Html::csrfMetaTags() // sets _csrf cookie. prevents Fastly CDN caching. ?> <?php $this->registerMetaTag(['name' => 'csrf-param', 'content' =>

如何在不设置
\u CSRF
令牌的情况下以Yii获取CSRF令牌?我尝试了很多东西,但都不管用。每次我尝试访问CSRF令牌时,它都会设置一个cookie

  <?//= Html::csrfMetaTags() // sets _csrf cookie. prevents Fastly CDN caching. ?>
  <?php 
    $this->registerMetaTag(['name' => 'csrf-param', 'content' => '_csrf']);
    $this->registerMetaTag(['name' => 'csrf-token', 'content' => 'xxx']);
    Yii::$app->request->csrfToken;
  ?>
当我注释掉
Yii::$app->request->csrfToken时,它不会设置cookie。我也尝试过立即取消设置cookie,但它会发送
Set cookie:\u csrf=delete;expires=1970年1月1日星期四00:00:01格林威治标准时间转到浏览器。我还尝试设置为false,但随后它设置了
PHPSESSID
cookie


我需要注销链接的CSRF元标记,它使用POST和Javascript提交。表单在将CSRF插入
标记时工作正常。

我发现还有第二个参数阻止发送到浏览器,因此我可以获取令牌,然后立即删除cookie

Yii::$app->response->cookies->remove('_csrf', false);

我发现,如果没有
\u csrf
cookie,其他表单就无法正常工作。我的浏览器中有一个旧的
PHPSESSID
\u csrf
cookie。如果从浏览器中删除这些cookie,则会出现
错误请求(#400)
错误。因此,您必须找到一种方法,使cookie或会话保持在您想要的页面上。
Yii::$app->response->cookies->remove('_csrf', false);