Permitir Apenas Requisições Ajax á uma URL e Bloquear Acesso HTTP Direto no Controller do Magento

Alguma vez você já precisou criar um módulo em seu Magento e gostaria de fazer requisições Ajax para uma action de um controller específico, mas gostaria que só houvesse retorno se fosse uma requisição via Ajax?

Vou lhe mostrar este pequeno método que você pode colocar no seu Controller para que bloqueie requisições diretas via browser:


protected function _isAjaxRequest()
{
	if(isset($_SERVER['HTTP_X_REQUESTED_WITH']) && ($_SERVER['HTTP_X_REQUESTED_WITH'] === 'XMLHttpRequest')) {
		return true;
	}
	$this->_redirect('');
	return;
}

Este pequeno trecho de código pode ser útil caso você precise fazer o mesmo que eu precisei estes dias para um módulo que estava desenvolvendo.

Outra forma bastante prática é a seguinte:


/**
 * Fora de um controller você pode fazer a seguinte verificação...
 */
...
if (!Mage::app()->getRequest()->isAjax()) {
    return;
}
...

Ou


/**
 * Dentro do contexto de um controller...
 */
...
if (!$this->getRequest()->isAjax()) {
    return;
}
...

 

Até a próxima!

Tiago Sampaio

Leave A Reply

Navigate