1、HTTP响应的结构是怎么样的?

HTTP响应由三个部分组成:

  • 状态码(Status Code):描述了响应的状态。可以用来检查是否成功的完成了请求。请求失败的情况下,状态码可用来找出失败的原因。如果Servlet没有返回状态码,默认会返回成功的状态码HttpServletResponse.SC_OK。
  • HTTP头部(HTTP Header):它们包含了更多关于响应的信息。比如:头部可以指定认为响应过期的过期日期,或者是指定用来给用户安全的传输实体内容的编码格式。如何在Serlet中检索HTTP的头部看这里。
  • 主体(Body):它包含了响应的内容。它可以包含HTML代码,图片,等等。主体是由传输在HTTP消息中紧跟在头部后面的数据字节组成的。

    2、什么是cookie?session和cookie有什么区别?

    cookie是Web服务器发送给浏览器的一块信息。浏览器会在本地文件中给每一个Web服务器存储cookie。以后浏览器在给特定的Web服务器发请求的时候,同时会发送所有为该服务器存储的cookie。
    session和cookie的区别:

  • 无论客户端浏览器做怎么样的设置,session都应该能正常工作。客户端可以选择禁用cookie,但是,session仍然是能够工作的,因为客户端无法禁用服务端的session。

  • 在存储的数据量方面session和cookies也是不一样的。session能够存储任意的Java对象,cookie只能存储String类型的对象。

    3、HTTP响应状态码

  1. 【1】2XX:2开头的状态码都表示请求被正确处理
    1. 200:请求被正确处理
    2. 204:请求被受理但无资源返回
    3. 206:客户端只请求资源的一部分
  2. 3XX:3开头的状态码表示需要进一步操作(重定向)
    1. 301:永久性重定向
    2. 302:临时重定向
    3. 303:与302类似,只希望客户端在请求一个URI时,能通过GET方法重定向到另一个URI上
    4. 304:发送附带条件的请求时,条件不满足时返回,与重定向无关
    5. 307:临时重定向,与302类似,只是强制要求使用POST方法
  3. 4XX:4开头的状态码一般都是客户端相关问题
    1. 400:请求报文语法有误,服务器无法识别
    2. 401:请求需要认证
    3. 403:请求的对应资源禁止访问
    4. 404:服务器找不到对应资源
  4. 5XX:5字开头的状态码一般是服务器端相关问题

    1. 500:服务器内部错误
    2. 503:服务器正忙

      4、跨域CORS

      出于浏览器的同源策略限制。同源策略(Sameoriginpolicy)是一种约定,它是浏览器最核心也最基本的安全功能,如果缺少了同源策略,则浏览器的正常功能可能都会受到影响。可以说Web是构建在同源策略基础之上的,浏览器只是针对同源策略的一种实现。同源策略会阻止一个域的javascript脚本和另外一个域的内容进行交互。所谓同源(即指在同一个域)就是两个页面具有相同的协议(protocol),主机(host)和端口号(port)
      当一个请求url的协议、域名、端口三者之间任意一个与当前页面url不同即为跨域
      image.png
      跨域流程
      image.png
      解决跨域
      image.pngimage.png

      5、Get和Post

  5. GET把参数包含在URL中,POST通过request body传递参数。

  6. GET在浏览器回退时是无害的,而POST会再次提交请求。
  7. GET请求会被浏览器主动cache,而POST不会,除非手动设置。
  8. GET请求只能进行url编码,而POST支持多种编码方式。
  9. GET请求参数会被完整保留在浏览器历史记录里,而POST中的参数不会被保留。
  10. GET请求在URL中传送的参数是有长度限制的,而POST么有。
  11. 对参数的数据类型,GET只接受ASCII字符,而POST没有限制。
  12. GET比POST更不安全,因为参数直接暴露在URL上,所以不能用来传递敏感信息。
  13. GET参数通过URL传递,POST放在Request body中。
  14. GET 请求可被收藏为书签,POST不行