문제

구성 : varnish + pageCache 모듈, 모든 페이지를 www로 리디렉션하십시오.htaccess

이슈 : 누군가가 아닌 비 www 페이지에 언제든지 PageCache_FormKey 쿠키가 저장됩니다.그런 다음 그들은 www로 리디렉션됩니다.다른 PageCache_FormKey 쿠키는 저장되지만 다른 값으로 저장됩니다.

여기에 이미지 설명을 입력하십시오 >>

내 코드에는 form 키가 있습니다.

<form action="<?php echo $this->getUrl('checkout/cart/updatePost') ?>" method="post">
    <?php echo $this->getBlockHtml('formkey'); ?>
.

를 시도한 것 :

    <form action="<?php echo $this->getUrl('checkout/cart/updatePost') ?>" method="post">
<input type="hidden" name="form_key" value="<?php echo Mage::getSingleton('core/session')->getFormKey(); ?>"/>
.

Mage::getSingleton('core/session')->getFormKey()가 두 번째 form 키를 출력하는 것처럼 여전히 작동하지 않습니다.첫 번째 pageCache_FormKey를 삭제하면 작동합니다.

checkout/cart/updatePost에서 fableKey 확인을 어떻게 바이 패스 할 수 있습니까?

(이것은 내 테마와 아무 관련이 없으며 기본 테마가 발생합니다. 그래서 PageCache 모듈이 바니시 응용 프로그램간에 설정되어 있음을 연결하는 문제라고 생각합니다.)

도움이 되었습니까?

해결책

솔루션은 checkout_cart_updatePost 이벤트에서 FampteKey 유효성 검사를 비활성화하는 것이 었습니다.

function disableCsrf($observer)
{
    $events = array(   
        'checkout_cart_updatePost',
    );
    $route = $observer->getEvent()->getControllerAction()->getFullActionName();

    if (in_array($route, $events)) {
        $key = Mage::getSingleton('core/session')->getFormKey();
        Mage::app()->getRequest()->setParam('form_key', $key);
    }
}
.

SupportDesk_CartFormKey 모듈과 동일합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 magento.stackexchange
scroll top