syuilo / summaly

🔍 Get a summary of any web page
MIT License
47 stars 24 forks source link

faviconの指定が相対的だった場合に誤ったURLが生成される #64

Closed otofune closed 7 years ago

otofune commented 7 years ago

http://example.com/example/ (ここで最後がスラッシュで終わるのが重要です) というリンクをクロールした時、"favicon.ico" (開始スラッシュがないのが重要です) という値がiconに入っているとします。 するとsummalyは src/general.ts#L97 にて URL.resolve('http://example.com/example/', 'favicon.ico') を実行することになります。 この結果は http://example.com/favicon.ico で有ることを期待したいのですが、 http://example.com/example/favicon.ico が返ってきてしまいます。 解決案として URL.resolve(url.protocol + url.host, icon) とすることで一定の解決が望めます。

otofune commented 7 years ago

本来はスラッシュを含めて指定しなければならず、つまりこれはバグでもなんでもないのですが、企業のWebページでも (今回は http://www.star-domain.jp/price/ で発覚) 知らずのうちにやってしまうページがあり、またブラウザでは正常表示できる為、今回報告した次第です ですので、前述の解決案は本来の意味で相対的指定 (それぞれのページでfaviconを変更する) であれば逆効果に成ってしまいます。依って最もコストは高いですが、webページにiconやshortcut icon要素があった場合もHEADリクエストでチェックし、処理するという方式にするのが最も誤りがないかと思います