2009-07-04 67 views
1

我在某個網站上遇到了問題。它已經提供了許多超鏈接到其他網站。例如一個這樣的網址是:瀏覽器可以自動更正「損壞的網址」嗎?

http://http//example.com/a9noaa.asp 

這顯然是不正確(http談到兩次)URL所以當一個人點擊它有像「地址找不到」頁面錯誤。

但是,當複製鏈接位置並將其粘貼到瀏覽器的位置欄中時,它會正確加載新頁面。所以這是超鏈接中提到的錯誤URL的問題。

,纔有可能使要訪問的URL的基本的完整性瀏覽器檢查像檢查:

  • http是隻出現一次,
  • 結腸鍵入正確,
  • 沒有發現異常字符在網址開頭,
  • 雙側隙是正確的存在等

或者在地址欄中輸入的URL並自動更正其中的錯誤?

是否有任何客戶端代碼可以使互聯網瀏覽器實現此功能?可能嗎?

或者是否有任何可用於流行瀏覽器(Firefox,IE)的插件來實現此目標?

謝謝。

-AD。

回答

5

首先,http://http//example.com/a9noaa.asp有效的URI與http的方案,第二http作爲主機名和//example.com/a9noaa.asp作爲路徑。所以如果它不是無效的,那麼瀏覽器不需要更正它。

現在讓我們來看看地址欄。如果輸入的位置無效,大多數用戶友好的瀏覽器會進行一些錯誤更正。其中一個糾正措施是在http://前加上字符串(如果不存在)。所以你只需輸入example.com來請求http://example.com
另一個更正措施是在輸入的字符串之前和之後用http://www..com完成未知主機名。所以你只需要輸入example,點擊回車,你的請求http://www.example.com

但是,位置欄外的任何錯誤更正尤其在超鏈接中可能至關重要。以此爲例:客人在留言簿條目中輸入他/她的網站URI,但省略了http://。現在,該值用於超鏈接,但丟失的http://未加前綴。因此,鏈接可能是這樣的:

<a href="example.com">Website</a> 

如果你點擊這樣的鏈接,該鏈接的相對URI將使用當前文檔的URI爲基礎來解決絕對URI。所以這個鏈接可能會擴展到http://some.example/guestbook/example.com。誰沒有經歷過?

但在瀏覽器中糾正丟失的http://是致命的。因爲作者可能打算引用http://some.example/guestbook/example.com而不是瀏覽器期望的http://example.com

因此要將其湊合:在缺少某些內容時(例如http://),更正適合用戶的位置欄輸入。但是,在每個環節都做不到。

+0

@Gumbo:但http://http//example.com/a9noaa.asp仍然不正確的網址,因爲它不會把我帶到它應該在的頁面!所以我不明白當你說它不是一個無效的網址? – goldenmean 2009-07-05 18:36:48

0

它確實不應該由瀏覽器來糾正錯誤形成的URL。 URL應該是某個頁面的唯一標識符。鏈接到頁面的人應該注意鏈接到正確的頁面。打開一個網址時一定不要猜測。

也就是說,有些瀏覽器比其他瀏覽器更好。在我的頭頂,我認爲IE瀏覽器不會理解「localhost:8888/test」(沒有協議給出,也沒有標準端口80),但Firefox至少會嘗試通過「http://localhost:8888/test」訪問它。我認爲這種猜測是最好的填補空白,任何進一步的自動糾正都會做得太多。

Safari會嘗試爲您自動猜測域名。如果「apple/safari」產生DNS錯誤,它將自動嘗試完成地址爲「apple.com/safari」。使用您的網址,它可能會嘗試將其完成爲「http://http.com//example.com/a9noaa.asp」,如果存在http.com,則可能會產生一個頁面。沒有辦法做到這一點,因此根本不應該這樣做。

1

您發佈的網址不是「不正確」,它是有效的。主機名可以採取多種形式,如http://localhost/http://http/以及更常見的http://example.com

如果不包括http://或網絡鏈接其他協議,則瀏覽器假設你使用的是相對鏈接。例如...

<a href="www.example.com">link</a> 

...會鏈接到http://yoursite.com/www.example.com,因爲這是一個完全有效的URL - 您可以命名一個文件www.example.com

我會建議聯繫有問題的網站來解決他們的錯誤。沒有瀏覽器會自動更正。

相關問題