HTTP标准定义了以下请求方法:GET、HEAD、POST、PUT、DELETE、TRACE、CONNECT和OPTIONS(PATCH在HTTP RFC中也有提到,但并不常用)。浏览器只会使用HTML发送GET和POST请求。任何PUT、PATCH或DELETE请求都是JavaScript调用HTTP请求的结果。
下面将简要介绍请求方法。
1.请求方法
GET方法通过请求统一资源标识符(URI)标识信息。URI通常与统一资源定位器(URL)一起使用。严格地说,URL是一种定义资源的URI类型,它包括通过网络位置来定位该资源的方法。例如,http://www.google.com/
HEAD方法与GET方法相同,只是服务器不能在响应中返回消息体。
POST方法由服务器决定调用接收服务器上的某些函数。换句话说,其通常会执行某种类型的后端操作,例如创建评论、注册用户、删除账户等。服务器响应POST所执行的操作可能会有所不同。服务器有时可能根本不会返回响应。例如,POST请求可能会导致处理请求时发生错误,并且不会在服务器上保存记录。
PUT方法调用一些引用远程网站或应用程序上已存在的记录的函数。例如,在更新已存在的账户、博客文章或其他内容时可能会使用它。同样,执行的操作可能会有所不同,并可能导致服务器根本不执行任何操作。
DELETE方法请求远程服务器删除用URI标识的远程资源。
TRACE方法是另一种不常见的方法,用于将请求消息返回给请求者。它允许请求者查看服务器接收到的内容,并使用这些信息来测试和收集诊断信息。
被保留的CONNECT方法用于代理服务器。代理服务器可将请求转发到其他服务器。此方法可以启动与所请求资源的双向通信。例如,CONNECT方法可以通过代理访问HTTPS的网站。
OPTIONS方法从服务器请求有关可用通信选项的信息。例如,通过调用OPTIONS可以确定服务器是否接受GET、POST、PUT、DELETE和OPTIONS调用。此方法不会指示服务器是否接受HEAD或TRACE调用。浏览器会自动为特定的内容类型(如application/json)发送这种类型的请求。这种方法称为“飞行前的OPTIONS调用”(preflightOPTIONS call),它起到了CSRF漏洞保护的作用。
2.HTTP是无状态的
HTTP请求是无状态的,这意味着发送到服务器的每个请求都被视为一个全新的请求。服务器在接收请求时并不知道它以前与浏览器的通信。这对大多数网站来说都是一个问题,因为网站要记住你是谁。否则,每次发送HTTP请求时你都必须重新输入用户名和密码。这也意味着处理HTTP请求所需的所有数据都必须与客户端发送到服务器的每个请求一起重新加载。为了解释这个令人困惑的内容,思考一下这样一个例子:如果你我之间有一个无状态的对话,在讲每一句话之前,我必须从“我是小明,刚才讨论的是黑客攻击”开始。然后你必须重新载入我们讨论的关于黑客攻击的所有信息。为了避免每次发送HTTP请求时都必须重新发送用户名和密码,网站使用了cookie或基本身份验证
评论 (0)