分类标签归档:HTTP

restful API的一些设计思路


什么是restful API

REST全称是Representational State Transfer,中文意思是表述(编者注:通常译为表征)性状态转移。 它首次出现在2000年Roy Fielding的博士论文中,Roy Fielding是HTTP规范的主要编写者之一。 他在论文中提到:"我这篇文章的写作目的,就是想在符合架构原理的前提下,理解和评估以网络为基础的应用软件的架构设计,得到一个功能强、性能好、适宜通信的架构。REST指的是一组架构约束条件和原则。" 如果一个架构符合REST的约束条件和原则,我们就称它为RESTful架构。

REST本身并没有创造新的技术、组件或服务,...

Read more

HTTP学习笔记08 - 如何申请HTTPS证书


根据签发证书的CA的不同,证书可以分为2种:

  1. 由自己创建的CA签发的证书,通常叫做自签名证书;
  2. 由PKI的CA签发的证书,具有普遍可信的证书。

自签名证书

之前12306的证书就是一个自签名证书,所以浏览器第一次打开12306的官网时,会被提示不安全。但是现在已经改为由PKI签发的证书,可以正确通过浏览器的证书检查了。 但是,这并不意味着自签名证书就没有用。比如在内网中,为了测试或者部署内部服务,为了成本考虑,可以签发一些自签名证书,由于时内网环境,我们已经100%确认对方的身份,所以就不需要PKI来帮助我们校验证书是否正确。

使用openssl创建自签名证书:

制作CA证书:

1....

Read more

HTTP学习笔记07 - HTTPS证书介绍


什么是TLS/SSL证书

SSL证书跟驾照有点类似。在驾照里,关键信息有几点:

  1. 我是谁
  2. 驾照是谁颁发的
  3. 驾照是否过期

在SSL证书里也是类似的:

  1. 我是谁(域名、实体是谁)
  2. 证书是由谁签发的
  3. 证书是否过期

所以,一个SSL证书可以这么定义:由无条件信任的机构颁发给实际使用者来提供身份认证的一段数据编码。

证书的编码

X.690定义了ASN.1用到的几种编码格式:

  1. Basic Encoding Rules(BER)
  2. Canonical Encoding Rules(CER)
  3. Distinguished Encoding Rules(DER)

其中: BER是最基本的编码格式。CE...

Read more

HTTP学习笔记05 - 安全的HTTP


为什么HTTP不安全

HTTP作为互联网上应用最为广泛的一种网络协议,目前最常见的版本有HTTP1.0, HTTP1.1和HTTP2。其中HTTP1.0和1.1版本传输为Text,也就是明文传输。而HTTP2传输的是二进制数据。但是如果不对数据进行加密处理的话,不管是二进制还是明文,都会存在很多安全风险,比如:数据篡改,身份伪造,中间人窃听等。

HTTPS (Secure Hypertext Transfer Protocol)

即安全超文本传输协议,它是在基于TLS/SSL的HTTP协议,可以理解为HTTP的安全版。HTTPS的主要作用是:

  1. 对数据进行加密,并建立一个安全信道来保证传...

Read more

HTTP学习笔记04 - 未来已来的HTTP2


HTTP/1当前的困境

当今的web,已经不再是当年的纯粹的一个展示性页面,而是基于浏览器的应用(browser-server application)。同时越来越多的页面元素导致页面需要加载的资源也日益增多。alexa排名前100的web站点上,平均每个页面需要加载的资源最少也会有大几十个。同时出于性能考虑,在浏览器里每个域名同时可以打开的连接数最多不超过8个。这就导致了每个连接最少也要处理10个左右的请求才能保证整个页面加载完毕。这势必会消耗大量的时间!

对于这些问题,我们通常会从以下几个方面进行优化:

  1. 异步接口合并(Batch Ajax Request)
  2. 图片合并,雪碧图(CSS...

Read more

HTTP学习笔记03 - http method


概述

HTTP 定义了一组请求方法, 以表明要对给定资源执行的操作。通过请求方法向服务器表明针对给定资源要执行的期望动作。 虽然他们也可以是名词, 但这些请求方法一般被称为HTTP动词.。每一个请求方法都实现了不同的语义。

HTTP METHOD是根据HTTP的使用场景不断增加完善的: HTTP/0.9中只有GET方法。 HTTP/1.0时增加了POST和HEAD。 HTTP/1.1增加了OPTIONS,PUT,PATCH,DELETE,TRACE和CONNECT这5种方法。

GET

向指定的资源发出“显示”请求。使用GET方法应该只用在读取数据,而不应当被用于产生“副作用”的操作中,例...

Read more

HTTP学习笔记02-常见状态码


所有HTTP响应的第一行都是状态行,依次是当前HTTP版本号,3位数字组成的状态代码,以及描述状态的短语,彼此由空格分隔。

状态代码的第一个数字代表当前响应的类型:

1xx消息:请求已被服务器接收,继续处理

2xx成功:请求已成功被服务器接收、理解、并接受

3xx重定向:需要后续操作才能完成这一请求

4xx请求错误:请求含有词法错误或者无法被执行

5xx服务器错误:服务器在处理某个正确请求时发生错误

虽然 RFC 2616 中已经推荐了描述状态的短语,例如"200 OK","404 Not Found",但是WEB开发者仍然能够自行决定采用何种短语,用以显示本地化的状态描述或者自定义信息...

Read more

HTTP协议学习笔记01 - HTTP协议发展史


HTTP(Hypertext Transfer Protocol)

即超文本传输协议,是互联网上应用最广泛的一种网络协议。设计HTTP最初的目的是为了提供一种发布和接收HTML页面的方法。通过HTTP或者HTTPS协议请求的资源由统一资源标识符(Uniform Resource Identifiers,URI)来标识。

超文本传输协议(英文:HyperText Transfer Protocol,缩写:HTTP)是一种用于分布式、协作式和超媒体信息系统的应用层协议。HTTP是万维网的数据通信的基础。

设计HTTP最初的目的是为了提供一种发布和接收HTML页面的方法。通过HTTP或者HTT...

Read more