整个url分为
1. protocol协议 协议例如像 https 或 http
2. auth 授权 auth就是用户名 密码 username password 一般在请求的时候服务器如果发现你配置了 auth 就回去找你的 request里面有没有"Authorization" 如果没有则返回401 然后让你登录 当你登录成功后 再次发送请求 然后这个时候就有了“Authorization” 然后服务器确认正确 返回页面
3. host主机 主机分为 hostname 主机名 和 port端口号
4. path 路径 path分为 pathname路径名称 然后还有 search 参数 有params/:id=xxx传参和query?id=xxx 传参
5. hash 哈希 最后就是 hash
①:HTTP请求不包括"#":
#后面是hash值‘ #’是用来指导浏览器动作的,对服务器端完全无用。所以,http请求中不包括#
②:#后面的字符:
在第一个#后面出现的任何字符,都会被浏览器解读为位置标识符。这意味着,这些字符都不会被发送发到服务器端
③:改变#不会重新刷新页面:
单单改变#后面的部分,浏览器只会滚动到相应位置,不会重新加载页面
④:改变#会改变浏览器的历史访问:
每次#后面的值发生变化也会添加到历史记录中 当点击回退键可以回退到修改前
⑤:window.location.hash读取#值:
window.location.hash这个属性可读可写。读取时,可以用来判断网页状态是否改变;写入时,则会在不重载网页的前提下,创造一条访问历史记录。
⑥:onhashchange事件:
当hash值发生变化触发的事件
origin 源头 分为 三个 分别是
1. protocol 协议
2 . hostname 域名 (主机名)
3. port端口号
他们三个 协议· 域名 · 端口 组成同源策略
同源策略是一种约定:由 Netscape 公司 1995 年引入浏览器,它是浏览器最核心也最基本的安全功能,现在所有支持 JavaScript 的浏览器都会使用这个策略。如果缺少了同源策略,浏览器很容易受到 XSS、 CSFR 等攻击。
当协议 域名 端口 中任何一个不同 就违背了同源策略 这个时候 就不能进行DOM获取 ,不能ajax请求数据,不能进行本地存储等操作
为什么要跨域?
为了在不同源的情况下进行DOM元素获取 ajax请求数据等 。。。
跨域解决方案 :
跨域还分为前端跨域和后端跨域
前端跨域解决 像 :
proxy代理
nginx反向代理
后端的:
cors跨域
nodejs中间件代理跨域