So erstellen Sie eine https-URL zu http

11

Ich frage mich, wie Magento bestimmt, welche Seite sicher und welche Seite unsicher sein soll.

Soweit ich weiß, macht Magento die Checkout- und Anmeldeseite standardmäßig nur als sicher und ich kann andere Seiten sicher machen, indem frontend/secure_url/....ich sie unter dem Konfigurationspfad über die config.xml meines Moduls spezifiziere

Die admin-seitige Konfiguration scheint in Ordnung zu sein. SSL ist sowohl im Frontend als auch im Backend aktiviert. Das Backend ist vollständig über https. Im Frontend funktionieren die meisten Seiten unter http einschließlich der Startseite einwandfrei, und die Checkout- und Anmeldeseiten werden erwartungsgemäß auf https umgeleitet.

Aber es gibt einige andere URLs, die zu https umgeleitet werden, von denen ich erwartet hatte, dass sie auf http bleiben, einschließlich des Controllers / der Aktion eines benutzerdefinierten Moduls.

Ich benötige einige Hinweise zum Debuggen. Gibt es eine andere Konfiguration, mit der ich verhindern kann, dass sie umgeleitet werden?

Mridul Aggarwal
quelle
Können Sie einige Beispiele / Code angeben (z. B. die XML-Konfiguration des benutzerdefinierten Moduls)? Außerdem würde ich nicht von "Debuggen" sprechen, wenn Sie versuchen, https: // zu http: //;)
umzuleiten

Antworten:

3

Dafür gibt es eine Funktion, die shouldUrlBeSecuresich app/code/core/Mage/Core/Model/Config.phponline befindet 1477.

Hier ist die komplette Funktion:

/**
 * 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];
}

Um zu sehen, welche URLs sicher sein sollten, können Sie Mage::log($secureUrls)der ifAnweisung eine einfache hinzufügen . So sah mein Protokolleintrag aus:

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

Nun , um herauszufinden , wie Magento wechselt HTTPzu HTTPS Ich denke , würden Sie am ehesten tauchen Sie ein in das Zend Framework in der haben im libInneren , lib/Zend/Http/*da es Dateien von größtem Interesse enthält. Ich hoffe jedenfalls, dass dies geholfen hat. Viel Glück!

Oleg
quelle
3

Wenn Sie verwendet für secure url für any other modulesdann müssen Sie auf eine gewisse Änderung in config.xmlder genannten Module .. Zuerst für Frontend - Tags

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

Und wenn Sie für productfaq url dann ändern $this->getUrl('productfaq/index/index', array('_secure'=>true));

Mein Erweiterungspfad \app\code\local\Amit\Productfaq\etc.

In config.xml muss unten geändert werden

     <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>
Amit Bera
quelle