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);