2013-12-14 19 views
0

編輯 - 它看起來像問題的原因是WordPress的HTTPS插件。如果我禁用它,它按預期工作。WordPress的template_directory函數忽略自簽名的SSL

所有樣式和腳本路徑均使用wordpress方法get_template_directory_uri()或相關等效方法提供。 docs在第一行很清楚:

檢索當前主題的模板目錄URI。檢查SSL。

但是,使用自簽名SSL,這仍會返回http路徑,這當然會導致所有css和js失敗。

我們包括像這樣:

<script src="<?php echo get_template_directory_uri(); ?>/js/lib/bootstrap-custom.js"></script> 

有誰知道是否有不需要改變每一個實例,我們稱之爲get_template_directory_uri()一個解決辦法或者這只是因爲SSL身份未確認,函數無法使用https?

我們使用了自簽名SSL,希望我們可以使用Authorize.net(它可能不喜歡自簽名的SSL)進行快速事務測試,所以我們不必購買實際的SSL來進行可能需要2分鐘來驗證。對於快捷鍵來說太多了吧?任何輸入讚賞。

回答

1

你必須向下挖了一下,找到這一點,但它在做什麼的檢查,看看如果這是當前正在處理的請求使用SSL。

基本上,is_ssl()函數如下:

function is_ssl() { 
    if (isset($_SERVER['HTTPS'])) { 
     if ('on' == strtolower($_SERVER['HTTPS'])) 
      return true; 
     if ('1' == $_SERVER['HTTPS']) 
      return true; 
    } elseif (isset($_SERVER['SERVER_PORT']) && ('443' == $_SERVER['SERVER_PORT'])) { 
     return true; 
    } 
    return false; 
} 

那麼,你擊中HTTPS請求驗證碼?

+0

這是我第一次嘗試。但服務器端口正在返回80,服務器協議正在返回http/1.1 - 因此無論打算如何檢測自簽名的SSL都不會接受它,儘管它允許通過https使用標準的不可信警告來提供頁面。 –

+0

服務器是Apache嗎?它是否支持某種爲您做SSL的代理,然後將http調用到實際的服務器上? – Otto

+0

這是apache。而且沒有代理。 –

1

檢查如何在template_directory_uri WooCommerce力量SLL和stylesheet_directory_uri

https://github.com/woothemes/woocommerce/blob/master/includes/class-wc-https.php#L23

+0

看起來它只是在一定的條件下強制執行的,我可能只是爲了破解它而使用is_page。問題是,https正在工作,但它不被視爲https。所以用於檢測https的傳統方法不起作用。我一直在尋找一種強制驗證的php選項。 –