2011-08-20 186 views
4

這可能是一個愚蠢的新手問題,所以appologies。SSL和W3 XHTML驗證器

我的網站正在使用SSL證書。我還包括如下每個我的網頁的W3驗證鏈接:

<a href="http://validator.w3.org/check?uri=referer"><img src="valid-xhtml1.png" alt="Valid XHTML 1.0 Strict" height="31" width="88" /></a> 

(注:複製W3的驗證圖像,以便SSL不會抱怨不安全的資源)。

當我這樣做,點擊圖片來驗證的頁面,我從驗證得到這個消息:

enter image description here

的錯誤中提到unsecurely請求驗證。所以我試着將<a>標籤的href改爲對驗證器使用https,但後來頁面根本無法加載(我猜是因爲驗證器不使用SSL)。

有沒有人知道解決這個問題的方法?我猜測沒有辦法按原樣使用代碼,但也許有更新uri=refereruri=https://mysite.com/...的方法?有沒有辦法動態獲取當前頁面的URL?

此外,僅供進一步參考,SSL是否僅僅阻止訪問referer請求標頭?

哦,我知道我可以使用http而不是https訪問我的網站,驗證器可以工作。但我寧願將它配置爲使用https。

回答

0

好吧,看起來好像沒有辦法只用HTML來做到這一點。相反,我決定使用JavaScript來處理這個問題。

我刪除了W3徽標附近的<a>標籤,並添加了onclick JavaScript函數validatePage()。所以這裏基本上是一個XHTML Strict頁面的模板,它仍然允許你包含驗證圖標。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 

<html xmlns="http://www.w3.org/1999/xhtml"> 
    <head> 
     <meta http-equiv="Content-Type" content="text/html;charset=utf-8" /> 
     <title>Title of document</title> 
     <script type="text/javascript"> 
      function validatePage() { 
       var validatorUrl = "http://validator.w3.org/check?uri=http" + (document.URL).substring(5); 
       window.open(validatorUrl); 
      } 
     </script> 
    </head> 
    <body> 
     <h1>Test Template Page</h1> 
     <p><img src="valid-xhtml1.png" alt="Valid XHTML 1.0 Strict" height="31" width="88" onclick="validatePage()" /></p> 
    </body> 
</html> 

注意如何validatorUrl變量「HTTPS」從URL剪掉,而是使用「HTTP」。所以我只是使用HTTP referer頭部迴避。

希望這可以幫助別人。

+0

這也會在新窗口/選項卡中打開驗證結果,而不是使用當前頁面,這很有用。 –

2

至於「驗證圖標」的問題:
這通常會導致對「不安全項目」(=混合HTTP + HTTPS內容)顯示的消息... ...的驗證圖標沒有正式在這樣的星座支持。 ..部分解決方法描述爲here

如果你要動態地搶URI我懷疑你將不得不使用JavaScript爲,然後創建/加入<a>在DOM ...

對於SSL/Referer的問題:
standard表示客戶端(=瀏覽器)只應在目標安全的情況下才發送引用者 - 所以是的,在混合情況下引用者不會被髮送到非安全的URL。

+0

+1感謝您的信息。 –

+0

歡迎您 - 查看關於「驗證圖標」的編輯... – Yahia

+0

再次感謝。我最終使用JavaScript來使圖標起作用(請參閱答案)。 –