web安全系列2:http初探
web安全系列的第二篇
首先,我们先来理解两个名词C/S架构和B/S架构。
所谓C/S架构,就是客户机/服务器架构,而B/S架构就是浏览器/服务器架构。C/S是通常的桌面程序的架构方式,而B/S就是网站的架构方式。所以,我们需要深入掌握B/S架构。

那么浏览器是如何访问服务器的呢?这分为几步。首先,流浪器需要通过你输入的域名发送一个HTTP请求。
那什么是HTTP呢?HTTP的全称是HyperText Transfer Protocol,即超文本传输协议。它详细规定了浏览器和服务器之间相互通信的规则。
那么问题就非常明了了,当我们输入一个网址,又叫URL(统一资源定位符)并按下回车后,浏览器就发送了一个数据包,成为HTTP请求,在经过服务器确认后,服务器返回一个数据包叫HTTP响应,每个响应承载着网页的一部分,很多个这种响应经过浏览器的组织就成为了我们所看到的网页。
想观看这一过程也很简单,我们打开浏览器,随便输入一个网址,回车,然后按下F12,之后选中网络或者Network即可看到我们发送出去或者接收到的请求和响应了。


如上图所示,我们选中一个链接,再选中Headers就能看到请求和返回头。
那么请求和返回头又是什么呢?
一个http请求包括请求行、请求头以及请求正文三部分组成。第一行为请求行,由请求方法,请求地址和http版本三部分组成。从第二行至后面的空行为请求头,包括一系列消息头,后面介绍。最后一行就是请求正文,它是可选项,表示发送给服务器的一些数据。

响应和请求一样由响应行、响应头和响应正文组成,具体内容也和请求一样,细微区别可以自行查找,但是问题不大。
下面介绍一些请求方法。
常见的请求方法有两个,GET和POST。它们都是用于获取请求页面的指定信息。不同的是GET方法只能向服务器发送少量的数据,但是POST能发送大量的数据。同时,GET会将数据显示在浏览器端,而POST不会。其他一些方法如PUT、DELETE等可自行查阅,后面遇到再进行说明。
很多时候,我们都会在浏览器中看到404,那么这是什么呢?下面我们一起来看看。
所谓的404其实是HTTP状态码,最常见的404代表请求资源不存在。其中最开头的4代表客户端错误,也就是你自己的网络等的错误。以1开头的状态码表示信息提醒,请求已经被成功接收,继续处理。以2开头表示服务器成功地处理了请求;以3开头表示一种重定向,即表示访问资源已经被迁移,浏览器自动跳转;以5开头表示web服务器自身出现了问题。具体的代码表示什么也请自行查阅,后面遇到时会进行讲解。

下面介绍HTTP消息,也就是HTTP头。它有四种:请求头、响应头、普通头和实体头。这是很重要的一部分,很多时候我们通过修改这些东西就能成功突破一些低端防火墙的拦截。
首先是请求头,它的常用字段有:
Host--用于指定主机和端口号
Referer--表示用户从什么地方过来的
Cookie--表示请求者身份等信息
Range--用于请求实体的一部分内容
x-forward-for--代表请求端的IP
Accept--表示客户端接收的MIME类型的信息
Accept-Charset--表示客户端接收的字符集
下面是响应头:
Server--表示web服务器名称
Set-Cookie--向客户端设置Cookie
Last-Modified--告诉浏览器资源的最后修改时间
Location--配合跳转
Refresh--告诉浏览器定时刷新浏览器
普通头对我们的工作用处不大(暂时不大),所以不做说明
实体头:
Content-Type--向接收方指示实体的介质类型
Content-Encoding--表示媒体类型的编码
Content-Length--表示正文的长度
Last-Modified--指示资源的最后修改日期和时间
以上就是常用的头了,这里只是简单的介绍,具体的可以通过上面说的F12方法查看,通过搜索可以了解更多关于这方面的内容。
以上就是本次的内容,有什么错误的地方希望指出,也欢迎大家评论转载和讨论。
(以上内容仅供学习交流使用,遵守法律人人有责)
web安全系列2:http初探的更多相关文章
- 构建安全的Xml Web Service系列之如何察看SoapMessage
原文:构建安全的Xml Web Service系列之如何察看SoapMessage 上一篇文章地址:构建安全的Xml Web Service系列一之初探使用Soap头 (5-22 12:53) ...
- 构建安全的Xml Web Service系列之初探使用Soap头
原文:构建安全的Xml Web Service系列之初探使用Soap头 Xml Web Service 从诞生那天就说自己都么都么好,还津津乐道的说internet也会因此而进入一个新纪元,可5年多来 ...
- 构建安全的Xml Web Service系列之wse之证书存储位置
原文:构建安全的Xml Web Service系列之wse之证书存储位置 我们在前几天对xml web service的安全性提出了一些建议,大家可以通过以下地址访问: 构建安全的Xml Web Se ...
- Web安全系列(三):XSS 攻击进阶(挖掘漏洞)
前言 在前些章节 (web安全系列(一):XSS 攻击基础及原理)以及(Web安全系列(二):XSS 攻击进阶(初探 XSS Payload))中,我详细介绍了 XSS 形成的原理以及 XSS 攻击的 ...
- Web API系列(三)统一异常处理
前面讲了webapi的安全验证和参数安全,不清楚的朋友,可以看看前面的文章,<Web API系列(二)接口安全和参数校验>,本文主要介绍Web API异常结果的处理.作为内部或者是对外提供 ...
- Web API系列(二)接口安全和参数校验
以前简单介绍过web api 的设计,但是还是有很多朋友问我,如何合理的设计和实现web api.比如,接口安全,异常处理,统一数据返回等问题.所以有必要系统的总结总结 web api 的设计和实现. ...
- [Python] 利用Django进行Web开发系列(二)
1 编写第一个静态页面——Hello world页面 在上一篇博客<[Python] 利用Django进行Web开发系列(一)>中,我们创建了自己的目录mysite. Step1:创建视图 ...
- ASP.NET Web API系列教程目录
ASP.NET Web API系列教程目录 Introduction:What's This New Web API?引子:新的Web API是什么? Chapter 1: Getting Start ...
- Java Web学习系列——Maven Web项目中集成使用Spring、MyBatis实现对MySQL的数据访问
本篇内容还是建立在上一篇Java Web学习系列——Maven Web项目中集成使用Spring基础之上,对之前的Maven Web项目进行升级改造,实现对MySQL的数据访问. 添加依赖Jar包 这 ...
随机推荐
- html:布局class名和其他class名个人整理总结
一:app 二:header 三:main 四:footer 1:中横杠:布局(main-top.main-left等) 2:下横杠:状态(item-active:选中等)
- 用EventEmitter收发消息
下面简单介绍其步骤. <发消息 方> 1.import进EventEmitter import { EventEmitter } from '@angular/core'; 2.在Comp ...
- zookeeper选举流程
如何在zookeeper集群中选举出一个leader,zookeeper使用了三种算法,具体使用哪种算法,在配置文件中是可以配置的,对应的配置项是”electionAlg”,其中1对应的是Leader ...
- springboot使用内部tomcat启动和外部tomcat启动的区别
springboot本身提供了内部tomcat,可以使用main方法直接启动即可,此时在访问项目请求时,不需要加上项目名称.例如:http://localhost:8088/user/ 如果使用外部t ...
- go调查内存泄漏
curl x.x.x.x/debug/pprof/heap > base.heap 过段时间 curl x.x.x.x/debug/pprof/heap > current.heap go ...
- 源码解析之HashMap源码
关于HashMap的源码分析,网上已经有很多写的非常好的文章了,虽然多是基于java1.8版本以下的.Java1.8版本的HashMap源码做了些改进,理解起来更复杂点,但也不脱离其桶+链表或树的重心 ...
- Flash AS3)actionScript代码制作文字渐变 + 描边
var sp:Sprite = new Sprite; //容器,放置稍后的渐变背景和文本框 this.addChild(sp); //容器添加到舞台 var maskMC:MovieClip = n ...
- Node.js 薄荷网爬取
Node.js:是一个基于前端的服务器,主要的特点:单线程,异步I/O(对这个没有了解,开发起来真的会踩很多坑),事件驱动 前言:本人主要是一个以使用.Net平台下的语言,进行开发的一个菜鸡,之前面试 ...
- centos7更改时区
1,linux系统更换时区 2,时间同步 1,linux系统更换时区 注:# timedatectl # 查看系统时间方面的各种状态 # timedatectl list-timezones # 列出 ...
- tensorflow源码阅读(c++)(一)
root/tensorflow/core |--common_runtime # 公共运行库 |--distributed_runtime # 分布式执行模块,含有grpc session, grpc ...