2019独角兽企业重金招聘Python工程师标准>>>

问题:在ie浏览器中点击访问相对URL时,地址栏中的路径与预期路径不符导致404错误?

URL的组成

  1. 协议:http:// https:// ftp:// 在"HTTP"后面的“//”为分隔符
  2. 域名:网址,也可以使用IP地址作为域名使用
  3. 端口:跟在域名后面的是端口,域名和端口之间使用“:”作为分隔符,如果省略端口将采用默认端口
  4. 虚拟目录:从域名后的第一个“/”开始到最后一个“/”为止,是虚拟目录部分。虚拟目录也不是一个URL必须的部分。
  5. 文件名:从域名后的最后一个“/”开始到“?”为止,是文件名部分,如果没有“?”,则是从域名后的最后一个“/”开始到“#”为止,是文件部分,如果没有“?”和“#”,那么从域名后的最后一个“/”开始到结束,都是文件名部分。文件名部分也不是一个URL必须的部分,如果省略该部分,则使用默认的文件名
  6. 参数:从“?”开始到“#”为止之间的部分为参数部分,又称搜索部分、查询部分。参数可以允许有多个参数,参数与参数之间用“&”作为分隔符。
  7. 锚:从“#”开始到最后,都是锚部分。

浏览器是如何解析绝对路径和相对路径的

在网页源代码中出现的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解析的区别相关推荐

  1. window对象(一) 计时器 定位导航 url解析 浏览历史 对话框 消息推送

    window对象 计时器 一个jQuery作者的写的关于定时器解释,记的顺手订阅一下.John Resig,jQuery之父 https://johnresig.com/blog/how-javasc ...

  2. php url映射,php – Laravel:将任意URL解析为相应的Controller / Route?

    鉴于我有一个任意的URL映射(以及许多其他)像这样 ... Route::get('/foobar/{parameter}', 'MyFoobarController@index'); ... 如何将 ...

  3. http 的一生: 一、特点与 URL解析

    HTTP 定义: HTTP协议特点: 1.支持客户/服务器模式. 2.简单快速:客户向服务器请求服务时,只需传送请求方法和路径.请求方法常用的有GET.HEAD.POST.每种方法规定了客户与服务器联 ...

  4. jsp页面获取参数的方法(url解析、el表达式赋值、session取值)【原创】

    最近使用myEclispse做网站,使用jsp+js+css做页面,网站中常用到从列表进入详情页面的跳转,下面对详情页面的值填充方式做一个简单总结: 1.url中使用request获取参数 jsp上方 ...

  5. yy神曲url解析php_使用PHP来简单的创建一个RPC服务

    RPC全称为Remote Procedure Call,翻译过来为"远程过程调用".主要应用于不同的系统之间的远程通信和相互调用. 比如有两个系统,一个是PHP写的,一个是JAVA ...

  6. 「Python 编程」编码实现网络请求库中的 URL 解析器

    相信各位 Python 开发者都用过 Requests 库,有些朋友还用过 WebSockets 库.这里回顾一下它们的基本用法,例如使用 Requests 库向目标网站发出 GET 请求: impo ...

  7. 十几款应用广泛的第三方URL解析库被曝8个漏洞

     聚焦源代码安全,网罗国内外最新资讯! 编译:代码卫士 网络安全公司 Claroty 和 Synk 联合分析了16款不同的第三方 URL 解析库,结果发现八个不一致和混淆问题,可用于绕过验证并易受大量 ...

  8. 根据视频URL解析视频信息(本地|网络)

    根据视频url解析视频播放时长 前言 艰难历程 案例 结束 前言 公司最近有个需求,从评价服务获取 优质评价,但是评价侧未给我们视频播放时长等信息,只能获取到视频的URL,但是我们这边必须要获取播放时 ...

  9. python URL解析转换成字典

    引用包: import urlparse 获取URL: url="https://www.baidu.com/s?ie=utf-8&f=8&rsv_bp=1&rsv_ ...

最新文章

  1. 一套Python试题
  2. jenkins内置变量的使用
  3. Vue是如何渲染页面的,渲染过程以及原理代码
  4. Hibernate sqlserver 的对象转成 Hibernate mysql 的对象时 需注意
  5. UNIX网络编程——进程间通信概述
  6. 3个月贵了1.6万!特斯拉Model 3今年已涨价6次
  7. 高中英语计算机辅助教学例子,计算机辅助教学在英语听力中的运用
  8. Perl 学习笔记-目标操作
  9. 计算机网络的拓扑结构
  10. office VBA 学习
  11. 【php】获取汉字词语转拼音pinyin
  12. Kotlin 找素数/质数
  13. 2017.2.15 开涛shiro教程-第二十一章-授予身份与切换身份(二) controller
  14. win10如何通过局域网从浏览器访问ip
  15. 什么是MOS管驱动电路,如何理解MOS管驱动电路原理?
  16. 森林防火应急指挥GIS系统森林防火监测预警系统
  17. YoutubeAPI使用
  18. 岁月不饶人,我亦未曾绕过岁月
  19. 深入理解 ESLint,就像了解你的另一半~
  20. Maya更改路径后找引用失败解决方法

热门文章

  1. 11. mysqli 学习
  2. ElasticSearch 创建父子类型
  3. 【转载】C# ??(问问,问号问号)运算符,可空值(申明加?(问号))的克星
  4. C#温故而知新学习系列之XML编程—Xml写入器XmlWriter类(三)
  5. 玩点创意编程,发现另一个世界
  6. matlab匿名函数求导,Matlab中的匿名函数的使用
  7. hashmap 不释放空间_刁难问题,为什么HashMap默认容量为16加载因子为0.75
  8. kubernetes-Service
  9. HandlerAdapters
  10. Properties作为Map集合的特有方法