2013-03-15 146 views
3

我在服務器端找到了很多關於相對路徑跟蹤 - 斜槓問題的答案,但在客戶端沒有找到答案。在這裏幫助我。URL:遵循相對路徑和尾部斜槓的規則

我正在編寫一個網絡爬取器來統計一組網站,並且遇到問題。一個網站我工作有尾隨斜線相對路徑導航欄一個,並打算這些路徑被視爲絕對的,就像這樣:

http://www.example.com/foo/bar頁面上

導航欄鏈接地址 - >foo/baz/quox/

意絕對URL - >http://www.example.com/foo/http://www.example.com/baz/http://www.example.com/quox/

的問題是,據我所知,這是不規範的行爲 - 然而,Firefox和Chrome都漢將這些路徑視爲絕對的。在第5.1節中RFC 1808和C.1>http://www.example.com/foo/foo/http://www.example.com/foo/baz/http://www.example.com/foo/quox/

特別 -

SPEC-正確絕對URL:根據RFC 1808,並RFC 2396,這些應象相對路徑處理,這樣在RFC 2396中,第四個例子顯示了這種情況被明確視爲相對路徑。在Ruby中,我正在編寫爬網程序,Addressable gem根據規範處理它們。

更糟糕的是有問題的服務器很高興返回200 OK了這些路徑,和所有的人都有這樣的導航欄:所以我最終爬行http://www.example.com/foo/這是同一頁http://www.example.com/foo/foo/http://www.example.com/foo/foo/foo/等,組合方法來奇怪的URL像http://www.example.com/foo/baz/quox/foo/

所以這裏的問題:我錯過的東西,允許Chrome和Firefox都將這些網址解釋爲絕對路徑?有什麼方法可以消除規範正確,絕對路徑是預期的情況?

回答

1

<head>元素內部必須有一個<base>標籤,用於指定頁面中相對路徑的基本URL。

RFC-1808