Cách tạo URL https thành http


11

Tôi tự hỏi làm thế nào magento xác định trang nào sẽ an toàn & trang nào không an toàn.

Theo những gì tôi hiểu, magento chỉ làm cho trang thanh toán và đăng nhập được bảo mật theo mặc định & tôi có thể làm cho các trang khác an toàn bằng cách chỉ định chúng theo đường dẫn cấu hình frontend/secure_url/....thông qua configconfig của mô-đun của tôi

Cấu hình phía quản trị có vẻ ổn. SSL được kích hoạt trong cả frontend & backend. Các phụ trợ hoàn toàn qua https. Ở frontend, hầu hết các trang đều hoạt động tốt dưới http bao gồm trang chủ, và các trang thanh toán & đăng nhập được chuyển hướng đến https như mong đợi.

Nhưng có một vài url khác được chuyển hướng đến https mà tôi dự kiến ​​sẽ vẫn ở trên http bao gồm cả bộ điều khiển / hành động của mô-đun tùy chỉnh.

Tôi cần một số gợi ý về cách gỡ lỗi này? Có cấu hình nào khác tôi có thể sử dụng để ngăn chúng khỏi bị chuyển hướng không?


Bạn có thể đưa ra một số ví dụ / mã (ví dụ: cấu hình XML của mô-đun tùy chỉnh) không? Ngoài ra, tôi sẽ không nói về "gỡ lỗi" khi bạn cố chuyển hướng https: // sang http: //;)
simonthesorcerer

Câu trả lời:


3

Có một chức năng chỉ cho điều đó, được gọi là shouldUrlBeSecurenằm app/code/core/Mage/Core/Model/Config.phptrên dòng 1477.

Đây là chức năng hoàn chỉnh:

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

Để xem URL nào cần được bảo mật, bạn có thể thêm một đơn giản Mage::log($secureUrls)bên trong ifcâu lệnh. Đây là mục nhật ký của tôi trông như sau:

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

Bây giờ để tìm hiểu làm thế nào Magento chuyển HTTPsang HTTPS tôi nghĩ rằng rất có thể bạn sẽ đi sâu vào khung Zend ở libbên trong lib/Zend/Http/*vì nó chứa các tệp được quan tâm nhất. Vâng, dù sao cũng hy vọng điều này sẽ giúp. Chúc may mắn!


3

Nếu bạn muốn sử dụng để secure url cho any other modulessau đó bạn cần cho một số sự thay đổi trong config.xmlcác module mà .. Đầu tiên cho lối sử dụng thẻ

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

Và, nếu bạn cho url của Productfaq thì hãy thay đổi $this->getUrl('productfaq/index/index', array('_secure'=>true));

Đường dẫn mở rộng của tôi \app\code\local\Amit\Productfaq\etc.

Trong config.xml cần thay đổi bên dưới

     <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>
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.