Cómo hacer una URL https a http


11

Me pregunto cómo magento determina qué página debe ser segura y qué página no debe ser segura.

Por lo que entiendo, magento solo hace que la página de pago e inicio de sesión sea segura de forma predeterminada y puedo hacer que otras páginas sean seguras al especificarlas en la ruta de configuración a frontend/secure_url/....través de config.xml de mi módulo

La configuración del lado del administrador parece estar bien. SSL está habilitado en frontend y backend. El backend está completamente sobre https. En la interfaz, la mayoría de las páginas funcionan bien en http, incluida la página de inicio, y las páginas de pago e inicio de sesión se redirigen a https como se esperaba.

Pero hay algunas otras URL que se redirigen a https que esperaba que permanecieran en http, incluido el controlador / acción de un módulo personalizado.

Necesito algunos consejos sobre cómo depurar esto? ¿Hay alguna otra configuración que pueda usar para evitar que se redirija?


¿Podría dar algunos ejemplos / código (por ejemplo, la configuración XML del módulo personalizado)? Además, no hablaría de "depuración" cuando intente redirigir https: // a http: //;)
simonthesorcerer

Respuestas:


3

Hay una función solo para eso, llamada shouldUrlBeSecureubicada en app/code/core/Mage/Core/Model/Config.phplínea 1477.

Aquí está la función completa:

/**
 * Check whether given path should be secure according to configuration security requirements for URL
 * "Secure" should not be confused with https protocol, it is about web/secure/*_url settings usage only
 *
 * @param string $url
 * @return bool
 */
public function shouldUrlBeSecure($url)
{
    if (!Mage::getStoreConfigFlag(Mage_Core_Model_Store::XML_PATH_SECURE_IN_FRONTEND)) {
        return false;
    }

    if (!isset($this->_secureUrlCache[$url])) {
        $this->_secureUrlCache[$url] = false;
        $secureUrls = $this->getNode('frontend/secure_url');
        foreach ($secureUrls->children() as $match) {
            if (strpos($url, (string)$match) === 0) {
                $this->_secureUrlCache[$url] = true;
                break;
            }
        }
    }

    return $this->_secureUrlCache[$url];
}

Para ver qué URL deben ser seguras, puede agregar un simple Mage::log($secureUrls)dentro de la ifdeclaración. Así es como se veía mi entrada de registro:

2014-02-12T11:55:26+00:00 DEBUG (7): Mage_Core_Model_Config_Element Object
(
    [install] => /install/wizard/checkSecureHost
    [customer] => /customer/
    [sales] => /sales/
    [authorizenet_paygate] => /paygate/authorizenet_payment
    [checkout_onepage] => /checkout/onepage
    [checkout_multishipping] => /checkout/multishipping
    [paypal_express] => /paypal/express
    [paypal_standard] => /paypal/standard
    [paypal_express_callbackshippingoptions] => paypal/express/callbackshippingoptions
    [googlecheckout_redirect] => /googlecheckout/redirect/
    [googlecheckout_beacon] => /googlecheckout/api/beacon/
    [googlecheckout_api] => /googlecheckout/api/
    [review_customer] => /review/customer/
    [tag_customer] => /tag/customer/
    [wishlist] => /wishlist/
    [paypaluk_express] => /paypaluk/express
    [rss_catalog_review] => /rss/catalog/review
    [rss_order_new] => /rss/order/new
    [rss_catalog_notifystock] => /rss/catalog/notifystock
    [centinel] => /centinel/
    [newsletter_manage] => /newsletter/manage/
    [downloadable] => /downloadable/customer/
    [downloadable_download] => /downloadable/download/
    [ogone_api] => /ogone/api
    [persistent_onepage_register] => /persistent/index/saveMethod
    [checkout_cart] => /checkout/cart
    [storecredit_info] => /storecredit/info/
    [giftcard_customer] => /giftcard/customer/
    [enterprise_pbridge_pbridge] => /enterprise_pbridge/pbridge/
    [invitation] => /invitation/
)

Ahora que encontrar la manera de Magento cambia HTTPa HTTPS creo que lo más probable es que tenga sumergirse en el marco de Zend en el libinterior lib/Zend/Http/*, ya que contiene los archivos de mayor interés. Bueno, de todos modos espero que esto haya ayudado. ¡Buena suerte!


3

Si, desea utilizar para secure url para any other modulesentonces necesita algún cambio en config.xmlde que los módulos .. En primer lugar para las etiquetas frontend utilizado

<secure_url>
            <productfaq>/productfaq</productfaq>
        </secure_url>

Y, si busca la URL de productfaq, cambie $this->getUrl('productfaq/index/index', array('_secure'=>true));

Mi camino de extensión \app\code\local\Amit\Productfaq\etc.

En config.xml necesita cambiar a continuación

     <frontend>
            <routers>
                <productfaq>
                    <use>standard</use>
                    <args>
                        <module>Amit_Productfaq</module>
                        <frontName>onestepcheckout</frontName>
                    </args>
                </productfaq>
            </routers>
            <layout>
                <updates>
                    <productfaq>
                        <file>productfaq.xml</file>
                    </productfaq>
                </updates>
            </layout>
        <!-- add secure url for extesnion, for that  
url productfaq automatically appnend https:  -->
             <secure_url>
                <productfaq>/productfaq</productfaq>
            </secure_url>
        </frontend>
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.