【同源策略】基础内容

同源策略

浏览器有一个很重要的概念——同源策略(Same-Origin Policy)。

所谓同源是指,域名,协议,端口相同。不同源的客户端脚本(javascriptActionScript)在没明确授权的情况下,不能读写对方的资源。

简单的来说,浏览器不允许包含在腾讯页面的脚本访问阿里巴巴页面的数据资源,会受到同源策略的限制

demo:本地访问百度资源

url(资源定位器)的构成

协议://域名(端口号、参数、查询等)

http://www.zhidao.baidu.com

协议:http / https

域名:www.zhidao.baidu.com

端口:80/ 90 / 3000等

这里的同源指的是:同协议,同域名和同端口

域名解析

1、域名是倒着解析的

.com 顶级域名

baidu.com 属于一级域名

zhidao.baidu.com 属于二级域名

www 是一级域名前缀 表示万维网维护的

www.baidu.com 属于特殊的二级域名

zhidao.baidu.com 属于 百度自己维护的网络地址

2、顶级域名

com org net 属于顶级域名,是在全世界范围内解析的,cn hk 是在一个地区解析的,

.cn(中国)

.com(商业机构)

.net(从事互联网服务的机构)

.org(非赢利性组织)

.com.cn(国内商业机构)

.net.cn(国内互联网机构)

.org.cn(国内非赢利性组织)

dns 先根据顶级域名判断网络范围在根据域名查找主机 IP 地址

前缀就不管了,理论上 www 开头相当于占位用的

在国外一般不写 www 国内风气就是写 www

3、端口

如果把 IP 地址比作一间房子 ,端口就是出入这间房子的门

真正的房子只有几个门,但是一个 IP 地址的端口可以有很多

浏览网页服务默认的端口号都是80,因此只需输入网址即可,不用输入:80

4、当你在浏览器里输入一个url发生了什么

简单归纳:(画图)

  • 浏览器通过 DNS 域名解析到服务 IP(ping www.baidu.com)

  • 客户端(浏览器)通过 TCP 协议建立到服务器的 TCP 连接(三次握手)

  • 客户端(浏览器)向 web 服务器端(HTTP 服务器)发送 HTTP 协议包,请求服务器里的资源文档 (telnet 模拟)

  • 服务器向客户端发送 HTTP 协议应答包

  • 客户端和服务器断开(四次挥手),客户端开始解释处理 HTML 文档

TCP/UDP(传输层协议)

面向连接的 TCP

TCP(Transmission Control Protocol,传输控制协议)是基于连接的协议,也就是说,在正式收发数据前,必须和对方建立可靠的连接。一个 TCP 连接必须要经过三次“对话”才能建立起来,其中的过程非常复杂,我们这里只做简单、形象的介绍,你只要做到能够理解这个过程即可。

面向非连接的 UDP 协议

“面向非连接”就是在正式通信前不必与对方先建立连接,不管对方状态就直接发送。与手机短信非常相似:你在发短信的时候,只需要输入对方手机号就 OK 了。
UDP(User Data Protocol,用户数据报协议)是与 TCP 相对应的协议。它是面向非连接的协议,它不与对方建立连接,而是直接就把数据包发送过去!

三次握手

1、先 Client 端发送连接、请求报文

2、Server 端接受连接后回复 ACK 报文,并为这次连接分配资源

3、Client 端接收到 ACK 报文后也向 Server 端发送 ACK 报文,并分配资源,这样 TCP 连接就建立了

四次挥手

1、Client 端发起中断连接请求,也就是发送 FIN 报文。Server 端接到 FIN 报文后,意思是说“我 Client 端没有数据要发给你了”,但是如果你还有数据没有发送完成,则不必急着关闭(Socket),可以继续发送数据。

2、server 发送 ACK ,“告诉 Client 端,你的请求我收到了,但是我还没准备好,请继续等我的消息”。

wait:这个时候 Client 端就进入 FIN_WAIT 状态,继续等待 Server 端的 FIN 报文。

3、当 Server 端确定数据已发送完成,则向 Client 端发送 FIN 报文,“告诉 Client 端,好了,我这边数据发完了,准备好关闭连接了”。

4、Client 端收到 FIN 报文后,“就知道可以关闭连接了,但是他还是不相信网络,怕 Server 端不知道要关闭,所以发送 ACK 后进入 TIME_WAIT 状态,如果 Server 端没有收到 ACK 则可以重传。”,Server 端收到 ACK 后,“就知道可以断开连接了”。Client 端等待了 2MSL 后依然没有收到回复,则证明 Server 端已正常关闭,那好,我 Client 端也可以关闭连接了。Ok,TCP 连接就这样关闭了!

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7vsIqCRs-1650157903734)(E:.\同源策略imges\0-1.png)]

应用层协议:http https等

超文本传输协议(HTTP,HyperText Transfer Protocol)是互联网上应用最为广泛的一种网络协议

HTTPS(全称:Hyper Text Transfer Protocol over Secure Socket Layer),是以安全为目标的HTTP通道,简单讲是HTTP的安全版

上面的协议为了建立客户端与服务器端的连接,此协议为了让两者进行沟通

为什么要有此协议呢,让计算机之间按照规矩说话,你问我答,你怎么问我怎么答,否则计算机各说各话,没办法沟通

http (请求报文,响应报文) 通过报文进行沟通

  • 请求报文
    • 请求行
      • 请求方法(GET、POST、DELETE、HEAD、TRACE、OPTION
      • 请求资源 (URL)
      • 请求协议版本(HTTP/1.1)
    • 请求头
      • http://tools.jb51.net/table/http_header
    • 请求主体
      • 表单提交数据如:name=aimee&age=18;
  • 响应报文:
    • 响应头
      • 响应协议版本号(HTTP/1.1)
      • 响应状态码(200)
      • 响应状态文字(0K)
      • http://tool.oschina.net/commons?type=5
      • (响应状态码)
    • 响应行
      • http://tools.jb51.net/table/http_header
    • 响应主体
      • ‘sign success’ (注册成功)
状态码定义说明
1xx信息接到请求继续处理
2xx成功成功的收到,理解,接受
3xx重定向为了完成请求需要进行另一部措施(如直接重浏览器缓存获取资源,或跳转到其他页面)
4xx客户端错误请求语法有错误,不能完全符合要求
5xx服务器错误服务器无法完成明显有效的请求

常见的 http 状态码

  • 成功状态码:
    • 200 服务器成功返回内容
    • 301/2 临时/永久重定向
    • 304 资源未被修改过
  • 失败状态码:
    • 404 请求内容不存在
    • 500 服务器暂时不可用
    • 503 服务器内部错误

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8B9NbcSL-1650157903735)(E:.\同源策略imges\0-2.jpg)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-JLsflcdV-1650157903736)(E:.\同源策略imges\0-3.jpg)]

请求方方法 GET POST 的区别

http 协议里实际上没有区别!搞什么鬼?

常规理解:

1、GET 使用 URL 或 Cookie 传参,而 POST 将数据,放在 BODY 中。 ? NAME = ‘CST’&AGE=18

2、GETURL 会有长度上的限制, POST 可以传输很多数据

3、POSTGET 安全

但其实 HTTP 协议里没有规定 POST 数据就要放在 BODY 里, 也没有要求 GET 数据就一定要放在 URL 中而不能放在 BODY 中

HTTP 协议对 GETPOST 都没有对数据的长度进行限制,两方面原因造成数据限制的原因

1、早期浏览器会对 URL 长度进行限制(浏览器 URL 输入框)

2、浏览器会对 Content-length 进行限制,这是为了服务器安全和稳定

浏览器缓存机制(http)

304 上次缓存的资源没有改变------浏览器如何知道是否直接取缓存的内容?

理解部分:请求、响应头

请求头:

if-None-Match: 匹配 etag 如果它修改了 不取缓存

If-Modified-Since:将先前服务器端发过来的最后修改时间戳发送回去

响应头:
etag ==> 标记图片资源

last-Modified (服务器最后修改的时间)和 etag 配合使用

ETagsIf-None-Match 的工作原理是在 HTTP Response 中添加 ETags 信息。当客户端再次请求该资源时,将在 HTTP Request 中加入 If-None-Match 信息(ETags 的值)。如果服务器验证资源的 ETags 没有改变(该资源没有改变),将返回一个304状态;否则,服务器将返回200状态,并返回该资源和新的 ETags

  • Date: 服务器响应内容日期

  • Cache-control:内容缓存时间

  • no-cache:不被缓存的,只不过每次在向客户端(浏览器)提供响应数据时,缓存都要向服务器评估缓存响应的有效性。

  • no-store:用于防止重要的信息被无意的发布。在请求消息中发送将使得请求和响应消息都不使用缓存。 根据缓存超时

  • max-age:指示客户机可以接收生存期不大于指定时间(以秒为单位)的响应。

  • min-fresh:指示客户机可以接收响应时间小于当前时间加上指定时间的响应。

  • max-stale:指示客户机可以接收超出超时期间的响应消息。如果指定max-stale消息的值,那么客户机可以 接收超出超时期指定值之内的响应消息。

  • Expires:内容保质期,表示存在时间,允许客户端在这个时间之前不去检查(发请求),等同 max-age 的效果。但是如果同时存在,则被 cache-control 的 max-age 覆盖

以秒为单位)的响应。

  • min-fresh:指示客户机可以接收响应时间小于当前时间加上指定时间的响应。

  • max-stale:指示客户机可以接收超出超时期间的响应消息。如果指定max-stale消息的值,那么客户机可以 接收超出超时期指定值之内的响应消息。

  • Expires:内容保质期,表示存在时间,允许客户端在这个时间之前不去检查(发请求),等同 max-age 的效果。但是如果同时存在,则被 cache-control 的 max-age 覆盖

网站如何统计用户从何点击而来 ==> referer:如果从浏览器地址栏里直接输入地址请求头没有 referer

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值