Http请求原理与相关知识
1、在浏览器地址栏输入URL,按回车后经过了哪些步骤
1-1. 浏览器向DNS服务器请求解析该URL中的域名及所对应的IP地址;
1-2. 解析出IP地址后,根据该IP地址和默认端口80与服务器建立TCP连接;
1-3. 服务器对浏览器请求作出响应,并把对应的html文本发送给浏览器并关闭TCP连接;
1-4. 浏览器得到html文件后进行显示内容;
2、请求
请求是由客户端向服务器发送请求,分为四个部分内容:请求方法(Request Method)、请求地址(Request URL)、请求头(Request Headers)、请求体(Request Body)。
2-1. 请求方法: 常见的请求方法有两种:GET和POST。其他请求方法
方法 |
描述 |
---|---|
GET |
请求页面,并返回页面内容 |
HEAD |
类似于GET请求,只不过返回的响应中没有具体的内容,用于获取报头 |
POST |
大多用于提交表单或上传文件,数据包含在请求体中 |
PUT |
从客户端向服务器传送的数据取代指定文档中的内容 |
DELETE |
请求服务器删除指定的页面 |
CONNECT |
把服务器当作跳板,让服务器代替客户端访问其他网页 |
OPTIONS |
允许客户端查看服务器的性能 |
TRACE |
回显服务器收到的请求,主要用于测试或诊断 |
GET和POST请求方法有如下区别。
- GET请求中的参数包含在URL里面,数据可以在URL中看到,而POST请求的URL不会包含这些数据,数据都是通过表单形式传输的,会包含在请求体中。
- GET请求提交的数据最多只有1024字节,而POST方式没有限制。
一般来说,登录时需要提交用户名和密码,其中包含了敏感信息,使用GET方式请求的话,密码就会暴露在URL里面,造成密码泄露,所以这里最好以POST方式发送。上传文件和FORM表单提交时,由于文件内容比较大,也会选用POST方式。
2-2. 请求URL: 请求的网址,即统一资源定位符URL,它可以唯一确定我们想请求的资源。
2-3. 请求头: 用来说明服务器要使用的附加信息,比较重要的信息有Cookie,Referer,User-Agent等。下面简要说明一些常用的头信息。
Accept:请求报头域,用于指定客户端可接受哪些类型的信息。
Accept-Language:指定客户端可接受的语言类型。
Accept-Encoding:指定客户端可接受的内容编码。
Host:指定请求资源的主机ip和端口号,其内容为请求URL的原始服务器或网关的位置。
Cookie:也常用复数形式 Cookies,这是网站为了辨别用户进行会话跟踪而存储在用户本地的数据,它的主要功能是维持当前访问会话。
Referer: 用来标识这个请求是从哪个页面发过来的,服务器可以拿到这一信息并做相应的处理,如作来源统计,防盗链处理等。
User-Agent:简称UA,它是一个特殊的字符串头,可以使服务器识别客户使用的操作系统及版本、浏览器及版本等信息。
Content-Type:也叫互联网媒体类型(Internet Media Type)或者MIME类型,在HTTP协议消息头中,它用来表示具体请求中的媒体类型信息,例如,text/html代表HTML格式,image/gif代表GIF图片,application/json代表JSON类型,更多对应关系可以查看对照表:http://tool.oschina.net/commons。
2-4. 请求体:请求体一般承载的内容是POST请求中的表单数据,而对于GET请求,请求体则为空。 下面列出了Content-Type和POST提交数据方式的关系。
Content-Type |
提交数据的方式 |
---|---|
application/x-www-form-urlencoded |
表单数据 |
multipart/form-data |
表单文件上传 |
application/json |
序列化JSON数据 |
text/xml |
XML数据 |
3、响应
响应是由服务端返回给客户端,可以分为三个部分:响应状态码:(Response Status Code)、响应头(Response Headers)和响应体(Response Body)。
3-1. 响应状态码: 响应状态码表示服务器的响应状态,如200代表服务器正常响应,404代表页面未找到,500代表服务器内部发生错误。更多状态码请参考:http://www.runoob.com/http/http-status-codes.html。
3-2. 响应头: 响应头包含了服务器对请求的应答信息,如Content-Type、Server、Set-Cookie等,下面简要说明下常用的头信息。
Data: 标识响应产生的时间。
Last-Modified:指定资源的最后修改时间。
Content-Encoding: 指定响应内容的编码。
Server: 包含服务器的信息,比如名称,版本号等。
Content-Type: 文档类型,指定返回的数据类型是什么,如text-html代表返回HTML文档,application/x-javascript则代表返回Javascript文件,image/jpeg则代表返回图片。
Set-Cookie: 设置Cookies。响应头中的Set-Cookie告诉浏览器需要将此内容放在Cookies中,下次请求携带Cookies请求。
Expires:指定响应的过期时间,可以使代理服务器或浏览器将加载的内容更新到缓存中,下次访问时就可以直接从缓存中加载,从而降低服务器负载,缩短加载时间。
3-3. 响应体: 响应体就是响应的消息体,如果是纯数据就是返回纯数据,如果请求的是HTML页面,那么返回的就是HTML代码,如果是JS就是JS代码,如此之类。
Http请求原理与相关知识的更多相关文章
- 【Oracle 集群】ORACLE DATABASE 11G RAC 知识图文详细教程之RAC 工作原理和相关组件(三)
RAC 工作原理和相关组件(三) 概述:写下本文档的初衷和动力,来源于上篇的<oracle基本操作手册>.oracle基本操作手册是作者研一假期对oracle基础知识学习的汇总.然后形成体 ...
- 【转】【Oracle 集群】ORACLE DATABASE 11G RAC 知识图文详细教程之RAC 工作原理和相关组件(三)
原文地址:http://www.cnblogs.com/baiboy/p/orc3.html 阅读目录 目录 RAC 工作原理和相关组件 ClusterWare 架构 RAC 软件结构 集群注册(OC ...
- 转载:【Oracle 集群】RAC知识图文详细教程(三)--RAC工作原理和相关组件
文章导航 集群概念介绍(一) ORACLE集群概念和原理(二) RAC 工作原理和相关组件(三) 缓存融合技术(四) RAC 特殊问题和实战经验(五) ORACLE 11 G版本2 RAC在LINUX ...
- Golang(十)TLS 相关知识(一)基本概念原理
0. 前言 最近参与一个基于 BitTorrent 协议的 Docker 镜像分发加速插件的开发,主要参与补充 https 协议 学习了 TLS 相关知识,下面对之前的学习做一下简单总结 参考文献:T ...
- 【转】java NIO 相关知识
原文地址:http://www.iteye.com/magazines/132-Java-NIO Java NIO(New IO)是从Java 1.4版本开始引入的一个新的IO API,可以替代标准的 ...
- HTML入门基础教程相关知识
HTML入门基础教程 html是什么,什么是html通俗解答: html是hypertext markup language的缩写,即超文本标记语言.html是用于创建可从一个平台移植到另一平台的超文 ...
- [转帖]xserver相关知识汇总
xserver相关知识汇总 https://blog.csdn.net/QTVLC/article/details/81739984 本文主要是从以下几个方面介绍xorg-xserver 相关的知 ...
- Tomcat源码分析——请求原理分析(中)
前言 在<TOMCAT源码分析——请求原理分析(上)>一文中已经介绍了关于Tomcat7.0处理请求前作的初始化和准备工作,请读者在阅读本文前确保掌握<TOMCAT源码分析——请求原 ...
- 微信小程序必知相关知识
微信小程序必知相关知识 1 请谈谈微信小程序主要目录和文件的作用? project.config.json 项目配置文件,用得最多的就是配置是否开启https校验: App.js 设置一些全局的基础数 ...
随机推荐
- css的常用知识点
一.css的引入方式 1.行内引入 直接在标签中定义样式 <p style="background-color: red">test</p> 2.嵌入式引入 ...
- XPath 快速入门
XPath 是一门在 xml 文档中查找信息的语言. XPath 使用路径表达式来选取 xml 文档中的节点或者节点集合. 路径表达式由元素和属性组成. 语法介绍 // 示例: // xml 文档 & ...
- JS当页换图片(分析href所给的信息)
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DT ...
- CentOS7保留默认Python版本并安装更新Python2和Python3共存
CentOS 7 默认的python版本是python2.7.5.因为yum依赖于默认的python版本的缘由,所以要先保留默认版本,并修改yum文件头部后,才能开始安装更新python2和pytho ...
- Python 去掉文本中空行
pandas 操作csv文件时,一直报错,排查后发现csv文本中存在很多“空行”: So 需要把空行全部去掉: def clearBlankLine(): file1 = open('text1.tx ...
- 基于UDP的套接字、粘包问题
一.基于UDP的套接字 UDP服务端 ss = socket() #创建一个服务器的套接字 ss.bind() #绑定服务器套接字 inf_loop: #服务器无限循环 cs = ss.recvfro ...
- 维多利亚的秘密 golang入坑系列
原文在gitbook,字字原创,版权没有,转载随意. 在写本文的前一天,2017维密在上海开始了. 为了纪念屌丝界的盛世,特为本节起名维多利亚的秘密.现在的社会,要想出名只有抓眼球.所以写份技术文章, ...
- pandas(六)读写文本格式的数据
pandas提供的将表格型数据读取为DataFrame对象的函数. 函数 说明 read_csv 从文件.URL.文件型对象中加载带分隔符的数据.默认分隔符为逗号. read_table 从文件.UR ...
- 3 TensorFlow入门之识别手写数字
------------------------------------ 写在开头:此文参照莫烦python教程(墙裂推荐!!!) ---------------------------------- ...
- 微信小程序组件form
表单组件form:官方文档 Demo Code: Page({ formSubmit: function(e) { console.log('form发生了submit事件,携带数据为:', e.de ...