IE与Chrome对相对URL解析的区别
2019獨角獸企業重金招聘Python工程師標準>>>
問題:在ie瀏覽器中點擊訪問相對URL時,地址欄中的路徑與預期路徑不符導致404錯誤?
URL的組成:
?
?瀏覽器是如何解析絕對路徑和相對路徑的:
在網頁源代碼中出現的url路徑有可能是以下幾種情況, 瀏覽器分別作不同的處理:
1) 絕對路徑, 比如: http://www.vinceruan.info/front/cross-domain-process-cookie-session/, 瀏覽器對此url不做任何的處理.
2)絕對路徑, 類似:www.vinceruan.info/java/optimize-website/, 瀏覽器僅僅是在url前面補上http://
3)相對路徑:/database/row-format-myisam/, 瀏覽器會在url前面補上host, 變成: http://www.vinceruan.info/database/row-format-myisam/
4)相對路徑: http-cache/, ?前面不帶/ ,此時瀏覽器做兩種處理,?
如果你在網頁中明確給出了base標簽, 那么得到的url是 base url + http-cache/,?
如果沒有給出base標簽,那么瀏覽器試圖自己解析得到base url, 解析方法是根據當前url的最后一個/之前的內容返回作為base url.
?因為當前路徑是:http://www.vinceruan.info/front/how-browser-parse-url-relative-absolute/,
?瀏覽器分析得到的base url 是:http://www.vinceruan.info/front/how-browser-parse-url-relative-absolute,?
?因此最后拿到的url 是http://www.vinceruan.info/front/how-browser-parse-url-relative-absolute/http-cache/,?
?這顯然是不正確的, 之所以出錯是因為本站做了seo優化, 網頁url優化成目錄url了,因此應該在網頁中顯示提供base標簽.
解決辦法:相對路徑前加/
js獲取訪問路徑 location.pathname
//假設當前頁面的 URL 是:http://www.xxx.com/test/test.shtml //獲取:/test/test.shtml var path=location.pathname;//設置 location.pathname = "/test/test.shtml";function getContextPath() {var pathName = document.location.pathname;var index = pathName.substr(1).indexOf("/");var result = pathName.substr(0,index+1);return result;} var path = getContextPath();window.location.href = path+"/com/forumAction_list.do";?
HTTP Referer是header的一部分,當瀏覽器向web服務器發送請求的時候,一般會帶上Referer,告訴服務器我是從哪個頁面鏈接過來的,服務器籍此可以獲得一些信息用于處理。比如從我主頁上鏈接到一個朋友那里,他的服務器就能夠從HTTP Referer中統計出每天有多少用戶點擊我主頁上的鏈接訪問他的網站。
在JSP中獲取REFERER的方式是:request.getHeader("REFERER");
轉載于:https://my.oschina.net/u/3160411/blog/838187
總結
以上是生活随笔為你收集整理的IE与Chrome对相对URL解析的区别的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C# 正则表达式类 Match类和Gro
- 下一篇: Netty权威指南之伪异步I/O编程