HTTP 的概述
HTTP 是一种用作获取诸如 HTML 文档这类资源的协议,属于OSI模型中应用层协议。它是 Web 上进行任何数据交换的基础,同时也是一种客户端—服务器(client-server)协议,也就是说,请求是由接受方——通常是浏览器发起的。由客户端——通常是个浏览器——发出的消息被称作请求(request),由服务端发出的应答消息被称作响应(response)。
HTTP 请求(request)的一个例子:
Method:代表请求方法是哪一种,定义客户端执行的动作。常见的场景有:在浏览器通过url获取网页资源(使用GET);在浏览器提交 HTML 表单的参数值(使用POST)。
Path:为请求路径,Version of the protocol:为HTTP协议的版本号
Headers:为请求头部,这里面包括用户代理,浏览器版本等信息
body:为请求体(是可选项,图中没有展示),像 POST 这样的方法,请求体内包含需要了发送的资源。
HTTP 响应的一个例子:
同样响应(response)依次包含的信息有:
HTTP协议版本号,状态码和状态信息,响应头部,以及body响应体(可选项),一般body是携带返回请求所要的数据内容。
简单介绍下状态码:
一般程序员最希望看到是200-OK,最不希望看到的是500-Internal-Server-Error。
下面是一些常见的状态码
状态码 | 状态信息 + 中文描述 |
---|---|
200 | OK (请求成功。一般用于GET与POST请求) |
301 | Moved Permanently (永久移动。请求的资源已被永久的移动到新URI,浏览器会自动定向到新URI) |
304 | Not Modified(未修改。所请求的资源未修改,服务器返回此状态码时,不会返回任何资源) |
400 | Bad Request (客户端请求的语法错误,服务器无法理解) |
403 | Forbidden (服务器理解请求客户端的请求,但是拒绝执行此请求) |
404 | Not Found (服务器无法根据客户端的请求找到资源) |
500 | Internal Server Error (服务器内部错误,无法完成请求) |
502 | Bad Gateway (作为网关或者代理工作的服务器尝试执行请求时,从远程服务器接收到了一个无效的响应) |
GET请求与POST请求的区别:
GET请求:
通过url获取网页的操作就是典型的get请求,但如果使用了GET方式传递数据,则网址链接后看到?变量名=值&变量名=值…的方式提交了数据,它是通过这种“拼接”的方式传递数据(不安全),用户输入一些重要数据时显然不可以使用这种方法传递。
POST请求补足了这个缺点:
要使用POST方式,只能通过Form表单发送POST请求,而想提交表单数据,必须在Form中使用<input type=“submit” 表单提交按钮,这两者必须搭配使用。最后设置Form标签属性:method = “POST” ,action=“提交页面地址”,点击submit按钮会将Form中所有表单数据安全提交到目的地址。
以上就是HTTP基本的概念,详细原理可参考相关百科或者文章。