3

スラッシュ付きの相対パスの質問に対するサーバー側の回答はたくさんありますが、クライアント側の回答はありません。ここで私を助けてください。

一連のWebサイトの統計を取得するために、Webクローラーを作成していますが、問題が発生しています。私が使用している1つのWebサイトには、末尾にスラッシュが付いた相対パスを持つナビゲーションバーがあり、次のようにそれらのパスが絶対パスとして扱われることを意図しています。

ページ上http://www.example.com/foo/bar

navbarリンクアドレス- > foo/、、baz/quox/

意図された絶対URL-> http://www.example.com/foo/、、http://www.example.com/baz/http://www.example.com/quox/

問題は、私が知る限り、これは非標準の動作ですが、FirefoxとChromeはどちらもこれらのパスを絶対的なものとして処理します。RFC1808およびRFC2396によると、これらは次のように相対パスのように処理する必要があります。

スペック-正しい絶対URL- > http://www.example.com/foo/foo/、、http://www.example.com/foo/baz/http://www.example.com/foo/quox/

特にRFC1808のセクション5.1とRFC2396のC.1で、4番目の例はこのケースが特に相対パスとして扱われていることを示しています。私がクローラーを書いているRubyでは、Addressablegemは仕様に従ってこれらを処理します。

さらに悪いことに、問題のサーバーはこれらのパスに対して200 OKを返し、すべてのパスにこのナビゲーションバーがあります。したがって、http://www.example.com/foo/と同じページなどを組み合わせて、次のような奇妙なURLにクロールすることになります。http://www.example.com/foo/foo/http://www.example.com/foo/foo/foo/http://www.example.com/foo/baz/quox/foo/

だからここに質問があります:ChromeとFirefoxの両方がこれらのURLを絶対パスとして解釈することを可能にする何かが欠けていますか?仕様が正しく、絶対パスが意図されているものである場合を明確にする方法はありますか?

4

1 に答える 1

1

ページ内の相対パスのベース URL を指定するために使用される要素<base>内にタグが定義されている必要があります。<head>

RFC-1808

于 2015-05-19T12:41:04.837 に答える