多了个尾巴

有时候,当你尝试在地址栏输入https://123/demo的时候,会发现浏览器会重定向到https://123/demo/这个地址,也就是多了个/,发生了重定向。有图为证:

上面这个图是在地址栏输入imgss.github.io/demo的截图,根据这张图,可以分析,从开始请求到页面显示的过程是这样的:

  1. 当在浏览器中输入上面的地址时,服务器首先返回一个状态码为301的响应,同时响应头里有一个location,值是Location:http://imgss.github.io/demo/告诉浏览器去请求这个地址,如下图:

  2. 于是浏览器不甘心,再次向浏览器发起请求http://imgss.github.io/demo/,注意这次是http,服务器却返回状态码307,告诉浏览器去还要再跑一趟:请求Location:https://imgss.github.io/demo/`这个地址才能拿到资源

  3. 浏览器第三次请求https这个地址,才得到数据并加载显示页面。

'/'的作用

这里不谈http=>https这一步的定向,就说说有尾巴和没尾巴的区别。

他们的区别就在于两者所表示的当前页面的路径不同。前者的当前路径是根路径,后者是demo子路径。

举个例子:假如当前页面的html中有一个超链接,地址用相对路径href="./statictodo/index.html"表示,


如果页面的当前地址是https://imgss.github.io/demo
那么./所代表的是根路径,
当点击超链接时,浏览器会请求https://imgss.github.io/statictodo/index.html而忽略掉demo,这就可能导致服务器返回404;


如果页面的当前地址是https://imgss.github.io/demo/
那么./所代表的就是地址本身,
点击超链接时浏览器就会请求https://imgss.github.io/demo/statictodo/index.html这个路径。

对于静态资源服务器来说,请求https://imgss.github.io/demo/这样的路径能访问到页面,是因为服务器会自动在demo路径下尝试找index.html之类的文件并发给浏览器,所以html的当前路径一定是demo下的,也是因为这样,浏览器才会通过重定向自动加上/,防止相对路径解析出错,保证浏览器能正确的请求到资源。

url最后的“/”是什么作用的更多相关文章

  1. URL中“#” “?” &“”号的作用

    URL中"#" "?" &""号的作用   阅读目录 1. # 2. ? 3. & 回到顶部 1. # 10年9月,twit ...

  2. URL中#(井号)的作用(转)

    2010年9月,twitter改版. 一个显著变化,就是URL加入了"#!"符号.比如,改版前的用户主页网址为 http://twitter.com/username 改版后,就变 ...

  3. hash在URL上的用法及作用

    阅读目录 1. # 2. ? 3. & 回到顶部 1. # 10年9月,twitter改版.一个显著变化,就是URL加入了"#!"符号.比如,改版前的用户主页网址为http ...

  4. python测试开发django-4.获取url参数和name的作用

    前言 如打开博客园按时间分类标签页[https://www.cnblogs.com/yoyoketang/archive/2018/10.html],里面是时间参数是动态的,如果我想获取里面的时间参数 ...

  5. django学习-5.获取url参数和name的作用

    1.前言 假如我们要打开这两个博客园地址:[https://www.cnblogs.com/xiamen-momo/archive/2020/11.html].[https://www.cnblogs ...

  6. url加时间戳方法及作用

    速记:URL 的末尾追加了时间.这就确保了请求不会在它第一次被发送后即缓存,而是会在此方法每次被调用后重新创建和重发:此 URL 会由于时间戳的不同而稍微有些不同.这种技巧常被用于确保到脚本的 POS ...

  7. ${openid_wx} el解析式放入url的“”里才起作用。

    window.location.href="${ctx }/wx/reservation/content?shopid="+shopid+"&&openi ...

  8. maven pom文件的 name 标签 和 url标签到底是什么作用

  9. MVC的URL路由规则

    MVC的URL路由规则 Routing的作用:它首先是获取到View传过来的请求,并解析Url请求中Controller和Action以及数据,其次他将识别出来的数据传递给Controller的Act ...

随机推荐

  1. 触摸屏 adb调试

    1.adb shell cat /proc/kmsg 这条命令肯定是要放在第一位的,可以打印内核信息,对应于驱动程序中的printk语句. 如果出现以下提示,说明权限不够,可以通过adb root获取 ...

  2. php 大文件上传的实现

    最近公司做工程项目,实现大文件上传 网上找了很久,发现网上很多代码大都存在很多问题,不过还是让我找到了一个符合要求的项目. 工程: 对项目的文件上传功能做出分析,找出文件上传的原理,对文件的传输模式深 ...

  3. (转) HighCharts 非规律日期 多条曲线的 绘画

    转自:http://blog.csdn.net/z69183787/article/details/8651296 项目中需要为A,B 2个元素 绘出统计值的曲线,但A与B 的 时间点 并不一致,查找 ...

  4. tomcat配置之后,localhost:8080访问不到猫界面解决办法

  5. VS SVN

    AnkhSVN - Subversion Support for Visual Studio    直接包管理中就可以安装 VS2015和SVN合作 Visual Studio 添加SVN插件 Ank ...

  6. Curl工具的使用

      Curl命令可以通过命令行的方式,执行Http请求.在Elasticsearch中有使用的场景,因此这里研究下如何在windows下执行curl命令. 工具下载 在官网处下载工具包:http:// ...

  7. hdu 3030

    这道题主要就是问你,长度为n的序列,有多少种上升的子序列 当前点的情况种数等于前面所有小于它的点的种数相加 + 1 1就是只有这一个点的时候的序列 那就是要多次查询前面比它小的点的种数的和 那么就是区 ...

  8. browsersync

    以后不需要F5了 之前实现自动刷新,是通过livereload,它需要插件比较麻烦:现在改为browsersync. BrowserSync,迅捷从免F5开始 完整选项 不止是自动刷新:默认就有 UI ...

  9. 连接Oracle时ORA-12541 TNS 无监听程序

    http://www.cnblogs.com/Qian123/archive/2016/08/24/5803085.html

  10. 动态设置和访问cxgrid列的Properties

    动态设置和访问cxgrid列的Properties   设置: cxGrid1DBTableView1Column.PropertiesClass   =   TcxTextEditPropertie ...