url最后的“/”是什么作用
多了个尾巴
有时候,当你尝试在地址栏输入https://123/demo的时候,会发现浏览器会重定向到https://123/demo/这个地址,也就是多了个/,发生了重定向。有图为证:

上面这个图是在地址栏输入imgss.github.io/demo的截图,根据这张图,可以分析,从开始请求到页面显示的过程是这样的:
当在浏览器中输入上面的地址时,服务器首先返回一个状态码为301的响应,同时响应头里有一个location,值是
Location:http://imgss.github.io/demo/告诉浏览器去请求这个地址,如下图:
于是浏览器不甘心,再次向浏览器发起请求
http://imgss.github.io/demo/,注意这次是http,服务器却返回状态码307,告诉浏览器去还要再跑一趟:请求Location:https://imgss.github.io/demo/`这个地址才能拿到资源:浏览器第三次请求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最后的“/”是什么作用的更多相关文章
- URL中“#” “?” &“”号的作用
URL中"#" "?" &""号的作用 阅读目录 1. # 2. ? 3. & 回到顶部 1. # 10年9月,twit ...
- URL中#(井号)的作用(转)
2010年9月,twitter改版. 一个显著变化,就是URL加入了"#!"符号.比如,改版前的用户主页网址为 http://twitter.com/username 改版后,就变 ...
- hash在URL上的用法及作用
阅读目录 1. # 2. ? 3. & 回到顶部 1. # 10年9月,twitter改版.一个显著变化,就是URL加入了"#!"符号.比如,改版前的用户主页网址为http ...
- python测试开发django-4.获取url参数和name的作用
前言 如打开博客园按时间分类标签页[https://www.cnblogs.com/yoyoketang/archive/2018/10.html],里面是时间参数是动态的,如果我想获取里面的时间参数 ...
- django学习-5.获取url参数和name的作用
1.前言 假如我们要打开这两个博客园地址:[https://www.cnblogs.com/xiamen-momo/archive/2020/11.html].[https://www.cnblogs ...
- url加时间戳方法及作用
速记:URL 的末尾追加了时间.这就确保了请求不会在它第一次被发送后即缓存,而是会在此方法每次被调用后重新创建和重发:此 URL 会由于时间戳的不同而稍微有些不同.这种技巧常被用于确保到脚本的 POS ...
- ${openid_wx} el解析式放入url的“”里才起作用。
window.location.href="${ctx }/wx/reservation/content?shopid="+shopid+"&&openi ...
- maven pom文件的 name 标签 和 url标签到底是什么作用
- MVC的URL路由规则
MVC的URL路由规则 Routing的作用:它首先是获取到View传过来的请求,并解析Url请求中Controller和Action以及数据,其次他将识别出来的数据传递给Controller的Act ...
随机推荐
- C++ char, unsigned char, signed char
C语言中的 char, unsigned char, signed char 一.他们是什么? signed char是有符号的,但是unsigned char没有符号,两者在存储上没有任何区别都是8 ...
- Linux学习(1)- TCP/IP网络协议基础
Linux学习(1)- TCP/IP网络协议基础 一.TCP/IP 简介 学习内容 TCP/IP(Transmission Control Protocol/Internet Protocol)是传输 ...
- 20155205 《Java程序设计》实验三(敏捷开发与XP实践)实验报告
20155205 <Java程序设计>实验三(敏捷开发与XP实践)实验报告 一.实验内容及步骤 (一)使用Code菜单 在IDEA中使用工具(Code->Reformate Code ...
- Forward团队-爬虫豆瓣top250项目-团队编程项目开发环境搭建过程
本次结对编程和团队项目我都需要用python环境,所以环境的搭建是一样的.(本文部分内容引用自己博客:http://www.cnblogs.com/xingyunqi/p/7527411.html) ...
- XML与DTD
什么是XML XML个称为Extensible Markup Language,意思是可扩展的标记语言. 应用常见 配置文件 <?xml version="1.0" enco ...
- android上的i-jetty (1)环境搭建
介绍下如果把android设备作为一个web服务器使用, 编译i-jetty 1. 将源码download下来,http://code.google.com/p/i-jetty/downloads/l ...
- js-实现搜狐列表
<!DOCTYPE html><html> <head> <meta charset="UTF-8"> <title>& ...
- [leet code 165]Compare Version Numbers
1 题目 Compare two version numbers version1 and version2.If version1 > version2 return 1, if versio ...
- python--求参赛两队所有可能的比赛组合情况
朋友遇到一个面试题,让我帮忙实现,题目如下: 红队有A1,B1,C1三名队员,蓝队有A2,B2,C2三名队员,每轮比赛各队出一名队员参加,一名队员只能参加一次比赛,假设A1不会和B2打,B1不会和B2 ...
- Windows安装配置docker
如果是win10的,请在https://docs.docker.com/docker-for-windows/install/#download-docker-for-windows 下载Stable ...