Come creare URL https su http


11

Mi chiedo come Magento determini quale pagina dovrebbe essere sicura e quale pagina non dovrebbe essere sicura.

Da quanto ho capito, magento rende la pagina di checkout e login sicura per impostazione predefinita e posso rendere sicure altre pagine specificandole nel percorso di configurazione frontend/secure_url/....tramite config.xml del mio modulo

La configurazione lato amministratore sembra andare bene. SSL è abilitato sia in frontend che in backend. Il backend è completamente su https. Nel frontend la maggior parte delle pagine funziona bene sotto http, inclusa la homepage, e le pagine di checkout e login vengono reindirizzate su https come previsto.

Ma ci sono alcuni altri URL che vengono reindirizzati su https che mi aspettavo di rimanere su http, incluso il controller / l'azione di un modulo personalizzato.

Ho bisogno di alcuni suggerimenti su come eseguire il debug di questo? C'è qualche altra configurazione che posso usare per impedire che vengano reindirizzati?


Potresti fornire alcuni esempi / codice (ad es. La configurazione XML del modulo personalizzato)? Inoltre, non vorrei parlare di "debug" quando si tenta di reindirizzare https: // a http: //;)
simonthesorcerer

Risposte:


3

C'è una funzione solo per questo, chiamata shouldUrlBeSecuresituata in app/code/core/Mage/Core/Model/Config.phplinea 1477.

Ecco la funzione 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];
}

Per vedere quali URL devono essere sicuri, puoi aggiungere un semplice Mage::log($secureUrls)all'interno ifdell'istruzione. Ecco come appariva la mia voce di 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/
)

Ora per capire come Magento passa HTTPa HTTPS penso che molto probabilmente ti saresti immerso nel framework Zend liball'interno lib/Zend/Http/*perché contiene file di maggior interesse. Bene, spero comunque che questo abbia aiutato. In bocca al lupo!


3

Se, si vuole utilizzare per secure url per any other modulesallora avete bisogno di qualche cambiamento in config.xmldi quei moduli .. In primo luogo per il frontend utilizzato tag

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

E, se per l'URL di productfaq, cambia $this->getUrl('productfaq/index/index', array('_secure'=>true));

Il mio percorso di estensione \app\code\local\Amit\Productfaq\etc.

In config.xml è necessario modificare di seguito

     <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>
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.