method

get

从服务端获取资源

  • 请求参数在Url中,不安全
  • 对url数据长度有限制,1028个字符
  • 只支持ASCII 编码
  • 浏览器对它支持缓存

底层tcp 只发送一次请求

head

和get 一样,只不过不反悔 response body,只返回头,比如获取缓存信息等

post

向服务器提交数据

  • 请求参数放在request body中
  • 支持各种编码方式
  • TCP请求分两次,第一次服务端返回100 continue 第二次发送数据包,这样可以保证发送数据的完整性
  • 浏览器没有缓存机制(提交数据,缓存没有意义)

    put

    向服务器提交数据,文件

    与post 相似 put通过url 提交数据,如果服务端找不到这个位置(post 会返回404)服务端会创建这个资源,返回201 Created 如果找到这个资源的位置,会将原来的数据覆盖,具备幂等性

    PATCH

    对put的补充,对资源的部分更新

    option

    查看服务器状态

    浏览器用于检查服务器是否支持跨域,若支持一般服务端返回204
    通过返回头的allow 告知浏览器支持的请求方式

    delete

    删除资源

    通过URI指定删除定位的资源 和put一样,有安全问题?

    User-Agent

    内容:
    操作系统,系统版本,浏览器内核版本,浏览器版本

    浏览器伪装链

    取request hedader

    浏览器:for mac chrome 95.0

    User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.54 Safari/537.36

    浏览器:Safari 14.1.2 (14611.3.10.1.7)

    User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.1.2 Safari/605.1.15
    Macintosh; Intel Mac OS X 10_14_6是操作系统
    AppleWebKit/605.1.15 (KHTML, like Gecko) 是浏览器内核

IE伪装成 Mozilla
webKit 伪装成 KHTML
KHTML 伪装成 Gecko

最后 opera 伪装成上面任何浏览器
同时所有的浏览器又都宣称自己是 Mozilla

为什么要伪装

一些网页常常为一些特定的浏览器,操作系统等编写特定的网页,通过User-agent去判断
但这些浏览器为了看到更多的页面,所以通过User-Agent去做伪装
User-Agent:
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.54 Safari/537.36