HTTP 协议

151 阅读2分钟

小知识,大挑战!本文正在参与“程序员必备小知识”创作活动。

请求:Request请求头数据体

  • 请求⽅式url协议版本
  • POST /path?a=1&b=2 HTTP1.1
  • Host:www.baidu.com
  • Connection: keep-alive
  • User-Agent:asdasdasd
  • Cookie

传⽂件的⼀些信息

  • GET/POST——HEAD,PUT,DELETE
  • 响应:Response
  • 响应头
  • 数据体
  • 协议版本 状态码 message
  • 属性:值

Get与Post请求⽅式的区别

  • 是基于什么前提的?如果什么前提都没有,GET和POST⼏乎没有什么区别
  • 如果是基于RFC规范的。
  • 理论上:
    • get是⽤来获取数据的,post是⽤来发送数据的
  • 实现上:
    • GET的数据在URL是可⻅的。POST请求不显示在URL中
    • GET对⻓度是有限制的,POST⻓度是⽆限的。
    • GET请求的数据可以收藏为书签,post请求到的数据不可收藏为书签。
    • GET请求后,按后退按钮、刷新按钮⽆影响,post数据会被重新提交。
    • GET编码类型:application/x-www-form-url
    • post的编码类型:有很多种。encodeapplication/x-www-form-urlencodedmultipart/form-data
    • GET历史参数会被保留在浏览器⾥,psot不会保存在浏览器中的。
    • GET只允许ASCII.post没有编码限制,允许发⼆进制的。
    • GET与POST相⽐,GET安全性较差,因为所发的数据是URL的⼀部分。

Cookie与Session

  • Cookie是有限制的,存在浏览器⾥的,可以⻓期存储的 缺点:如果某个坏⼈,复制了我浏览器⾥的cookie,他就可以在他的电脑上登录我的账号了
  • 数据存在Session上也有缺点,⽤户量很⼤的时候,服务器端很耗资源的。

B/S结构

  • Browser/Server——Browser只负责内容的展示,Server负责提供内容。

C/S结构

  • Client/Server——Client只负责内容的展示,Server负责提供内容。

浏览器向服务器请求⼀个⻚⾯的本质是什么?

  • www.baidu.com
  • 服务器接收到这个请求后,服务器想要把这个⻚⾯的内容(HTML格式的字符串)返回给浏览器。
  • ⻚⾯的字符串存在哪⾥呢?存在HTML⽂件⾥。例如:index.html
  • 服务器端要读取⽂件。
  • 将读取出来的内容返回给浏览器。

跨域访问资源

  • 跨域请求的资源
    • 后端接⼝的数据。
    • 其它域的cookie
    • 其它域的缓存
  • 怎样算跨域?
    • ⻚⾯本身:有协议(http/https),域名,端⼝
    • 要请求的数据:http://www.baidu.com:80 协议,域名,端⼝这三个,有任意⼀个不⼀样就算跨域。

解决跨域

  • 后端(别⼈家的)配合我们进⾏跨域。
    • JSONP(正常的情况,返回的数据都是JSON格式。JSONP是⼀种特殊的格式。)
    • 后端设置Access-Control-Allow-Origin属性以⽀持跨域。
  • 后端不配合我们进⾏跨域
    • iframe(只能显示,不能控制)
    • 通过后端代理