http请求

http首部字段汇总

给你一囗甜甜゛ 提交于 2020-01-31 05:24:40
http协议的请求和响应报文中必定包含http首部,只是平时我们在使用Web的过程中感受不到它,对它关注的也不是很多,最近在阅读《图解HTTP》,学习一下HTTP首部的结构,已经首部中各字段的用法。 HTTP报文首部 HTTP协议的请求和响应报文中必定包含HTTP首部,首部内容为客户端和服务器分别处理请求和响应提供所需要的信息。列了一个请求和响应报文的大致结构脑图 HTTP报文结构 请求和响应中都会存在着首部字段,它们为浏览器和服务器,传递额外重要信息。 通常HTTP首部字段由首部字段名和字段值,中间以":"分割组成: Request Method: GET 字段值对应单个HTTP首部字段可以有多个值: cache - control : public , max - age = 0 首部字段类型 HTTP首部字段根据实际用途分为4中类型。 通用首部字段: 请求报文和响应报文两方都会使用到的首部。 请求首部字段: 从客户端向服务器发送请求报文时使用的首部,补充了请求的附加内容、客户端信息、响应内容相关优先级等信息。 响应首部字段: 从服务器端向客户端返回响应报文时使用的首部,补充了响应时的附加内容,也会要求客户端附加额外的内容信息。 实体首部字段: 针对请求报文和响应报文的实体部分使用到的首部,补充了资源内容更新时间等与实体有关的信息。 通用首部字段 首部字段名 说明 Cache

一次HTTP请求中的缓存

ε祈祈猫儿з 提交于 2020-01-31 02:12:02
一个HTTP Request从用户点击的一瞬间,到服务器返回请求,一般会经过以下类型的缓存 (按照由客户端到服务器端的顺序) 1.浏览器端存储: HTML5中的本地存储功能允许在浏览器端保存数据. Flash等第三方插件也有类似的功能. JavaScript保存一些数据在当前Context也算这种类型. 2.浏览器端文件缓存 HTTP协议中在时间未过期等情况下,不请求服务器数据而直接使用本地的文件 (请参考HTTP协议中关于缓存控制的部分) 常用于html JavaScript css等文件的缓存,以减少请求次数 3.HTTP缓存304: HTTP协议中,如果服务器文件未发生变化,不返回用户请求的数据,而只是返回一个304响应 (更多内容请参考HTTP协议) 不减少请求数量,但是减少了响应的体积 通过控制动态文件的输出内容实现缓存(可以了解一下 Etag 等相关内容) 4.服务器端文件类型缓存 动态页面静态化为html文件; 代理服务器, CDN等.. 某些不常更新的的数据静态化为文件 主要是为了节省服务器资源,例如CPU 5.普通内存缓存: 这是我们平时用的最多的缓存 功能很强,例如.net中的Cache类按照时间等规则定时过期数据,例如缓存数据库数据 6.分布式缓存 例如Memcached,现代应用程序的规模越来越大,难免用上此类方案 经常通过自己分割程序实现分布式的缓存 7

iOS开发——网络篇——HTTP/NSURLConnection(请求、响应)、http响应状态码大全

你。 提交于 2020-01-31 01:12:57
一、网络基础 1、基本概念 > 为什么要学习网络编程 在移动互联网时代,移动应用的特征有 几乎所有应用都需要用到网络,比如QQ、微博、网易新闻、优酷、百度地图 只有通过网络跟外界进行数据交互、数据更新,应用才能保持新鲜、活力 如果没有了网络,也就缺少了数据变化,无论外观多么华丽,终将变成一潭死水 移动网络应用 = 良好的UI + 良好的用户体验 + 实时更新的数据 新闻:网易新闻、新浪新闻、搜狐新闻、腾讯新闻 视频:优酷、百度视频、搜狐视频、爱奇艺视频 音乐:QQ音乐、百度音乐、酷狗音乐、酷我音乐 LBS:百度地图、高德地图、大众点评、墨迹天气、滴滴打车 电商:淘宝、京东商城、天猫、蘑菇街、凡客诚品、美丽说 社交:QQ、微信、微博、陌陌、比邻 为什么要学习网络编程 网络编程是一种实时更新应用数据的常用手段 网络编程是开发优秀网络应用的前提和基础 > 基本概念 在网络编程中,有几个必须掌握的基本概念 客户端(Client):移动应用(iOS、android等应用) 服务器(Server):为客户端提供服务、提供数据、提供资源的机器 请求(Request):客户端向服务器索取数据的一种行为 响应(Response):服务器对客户端的请求做出的反应,一般指返回数据给客户端 作为移动开发工程师,主要的精力都是放在客户端开发 2、服务器 按照软件开发阶段来分,服务器可以大致分为2种

requests模块

和自甴很熟 提交于 2020-01-30 21:08:59
安装 pip install requests pip install -i https://pypi.doubanio.com/simple/ requests requests.request() 请求接受的参数 requests.request(method, url,** kwargs)类能够构造一个请求,支持不同的请求方式 import requests response = requests.request(method='get', url='https://www.baidu.com') print(response.status_code) request类中几个参数: method:请求方式。 url:请求URL。 **kwargs: params:字典或者字节序列,作为参数增加到url中,使用这个参数可以把一些键值对以 k1=v1&k2=v2 的模式增加到url中,get请求中用的较多。 data:字典、字节序列或者文件对象,重点作为向服务器提供或提交资源,作为请求的请求体,与params不同放在url上不同。它也可以接受一个字符串对象。 json:json格式的数据,可以向服务器提交json类型的数据。 headers:字典,定义请求的请求头,比如可以headers字典定义user agent。 cookies:字典或者CookieJar。 auth:元组

HTTP原理 请求方法

两盒软妹~` 提交于 2020-01-30 19:20:13
HTTP的工作过程 一次HTTP操作称为一个事务,其工作过程分为四步: 1.客户机与服务器建立连接:客户单击某个超级链接,HTTP的工作开始,接下来进行TCP连接的三次握手过程。 2.建立连接后,客户几发送一个请求给服务器,请求方式的格式为:统一资源标识符(URL)、协议版本号、MIME信息(包括请求修饰符、客户机信息和可能的内容)。 3.服务器接到请求后,给予相应的响应信息,其格式为:一个状态行(包括信息的协议版本号)、一个成功或错误的代码、后面的是MIME信息(包括服务器信息、实体信息、可能的内容)。 4.客户端接收到服务器所返回的信息,通过浏览器显示在用户的显示屏上,然后客户机与服务器断开连接。客户端收到服务器信息后,向服务器发送一个确认包,此包发送完毕,表示完成三次握手。 ——————————————————————————————————————— HTTP协议的主要特点: 1.支持客户/服务器模式-》过程 2.简单快速:客户向服务器请求服务时,只需发送请求方法(常用的有GET/POST/HEAD)和路径。每种请求方法规定了客户与服务器联系的类型不同,由于HTTP协议简单,使得HTTP服务器的程序规模小,因而通信速度快。 3.灵活:HTTP允许传输任意类型的数据对象,正在传输的类型用Content-Type加以标记。 4.无连接:限制每次连接只处理一个请求

HTTP和GET/POST请求(NSURLConnection)

耗尽温柔 提交于 2020-01-30 19:19:20
网络编程 网络编程是一种实时更新应用数据的常用手段 网络编程是开发优秀网络应用的前提和基础 网络基本概念 客户端(就是手机或者ipad等手持设备上面的APP) 服务器(远程服务器-本地服务器) 请求(客户端索要数据的方式) 响应(需要客户端解析数据) 数据库(服务器的数据从哪里来) HTTP URL 如何找到服务器(通过一个唯一的URL) URL介绍 统一资源定位符 url格式(协议\主机地址\路径) 协议:不同的协议,代表着不同的资源查找方式、资源传输方式 主机地址:存放资源的主机(服务器)的IP地址(域名) 路径:资源在主机(服务器)中的具体位置 请求协议 【file】访问的是本地计算机上的资源,格式是file://(不用加主机地址) 【ftp】访问的是共享主机的文件资源,格式是ftp:// 【mailto】访问的是电子邮件地址,格式是mailto: 【http】超文本传输协议,访问的是远程的网络资源,格式是http://(网络请求中最常用的协议) HTTP协议 简介 a.超文本传输协议 b.规定客户端和服务器之间的数据传输格式 c.让客户端和服务器能有效地进行数据沟通 优缺点 a.简单快速(协议简单,服务器端程序规模小,通信速度快) b.灵活(允许传输各种数据) c.非持续性连接(1.1之前版本是非持续的,即限制每次连接只处理一个请求,服务器对客户端的请求做出响应后

网络请求—HTTP协议

烂漫一生 提交于 2020-01-30 19:14:12
一、HTTP协议的作用 HTTP的全称是Hypertext Transfer Protocol,超文本传输协议 (1)规定客户端和服务器之间的数据传输格式 (2)让客户端和服务器能有效地进行数据沟通 二、HTTP通信过程 - 请求和响应 1.HTTP通信过程 - 请求 HTTP协议规定:1个完整的由客户端发给服务器的HTTP请求中包含以下内容 (1)请求行:包含了请求方法、请求资源路径、HTTP协议版本 (2)请求头:包含了对客户端的环境描述、客户端请求的主机地址等信息 (3)请求体:客户端发给服务器的具体数据,比如文件数据 2.HTTP通信过程 - 响应 客户端向服务器发送请求,服务器应当做出响应,即返回数据给客户端,HTTP协议规定:1个完整的HTTP响应中包含以下内容: (1)状态行:包含了HTTP协议版本、状态码、状态英文名称 (2)响应头:包含了对服务器的描述、对返回数据的描述(包括数据类型Content-Type、数据长度Content-Length、响应时间等) (3)实体内容:服务器返回给客户端的具体数据,比如文件数据 3.补充:推荐工具firebug-1.12.5-fx.xpi 虫子的作用:拦截所有的http请求。 4.常见的响应状态码 二、发送HTTP请求的方法 1、在HTTP/1.1协议中,定义了8种发送http请求的方法 GET、POST、OPTIONS

HTTP请求/响应报文结构

纵饮孤独 提交于 2020-01-30 19:12:19
HTTP协议版本有两种 :HTTP1.0和HTTP1.1 它们俩的区别在于 :HTTP1.0对于每个连接都只能传送一个请求和响应,请求后就会关闭,HTTP1.0没有Host字段;而HTTP1.1在同一个连接中可以传送多个请求和响应,多个请求可以重叠和同时进行,HTTP1.1必须有Host字段 http请求过程: 1)请求超链接——》客户端发送请求到服务器,请求包内容:协议版本号,求情地址,请求方式,请求头和请求参数 2)服务器接受请求——》开始处理请求——》将响应包返回给客户端,响应包内容:协议版本号,状态码,响应数据 3)前端收到响应包——》根据响应数据开始做相应处理 常见的请求头字段含义: 请求行:标明了请求方法,请求URL,HTTP协议及版本 Accept:浏览器可接受的MIME类型,也就是代表着浏览器希望接收什么样的文件 Accept-Charset:浏览器可接受的字符集 Accept-Encoding:浏览器能够进行解码的数据编码方式 Accept-Language:浏览器所接受的语言 Authorization:授权信息 Content-Length:表示请求消息正文的长度 Host:客户机通过这个头告诉服务器,想访问的主机名 If-Modified-Since:客户机通过这个头告诉服务器,资源的缓存时间 Referer:表明客户机是从哪里来的 User-Agent

http内容协商

这一生的挚爱 提交于 2020-01-30 16:33:55
概览 对于特定的URL来说,服务器可以根据一些原则来决定发送什么内容给客户端最合适。在有些场合下,服务器甚至可以自动生成定制的页面。比如,服务器可以为手持设备把HTML页面转换成WML页面。这类动态内容变换被称为转码。这些变换动作是HTTP客户端和服务器之间进行内容协商的结果   共有3种不同的方法可以决定服务器上哪个页面最适合客户端:让客户端来选择、服务器自动判定,或让中间代理来选。这3种技术分别称为客户端驱动的协商、服务器驱动的协商以及透明协商 1 客户端驱动 对于服务器来说,收到客户端请求时只是发回响应,在其中列出可用的页面,让客户端决定要看哪个,这是最容易的事情。很显然,这是服务器最容易实现的方式,而且客户端很可能选择到最佳的版本(只要列表中有让客户端选择的足够信息)。不利之处是每个页面都需要两次请求:第一次获取列表,第二次获取选择的副本。这种技术速度很慢且过程枯燥乏味,让用户厌烦   从实现原理上来说,服务器实际上有两种方法为客户端提供选项:一是发送回一个HTML文档,里面有到该页面的各种版本的链接和每个版本的描述信息,另一种方法是发送回HTTP/1.1响应时,使用300 Multiple Choices响应代码。客户端浏览器收到这种响应时,在前一种情况下,会显示一个带有链接的页面,在后一种情况下,可能会弹出对话窗口,让用户做选择。不管怎么样

Laravel的生命周期

风格不统一 提交于 2020-01-30 08:23:27
Laravel的生命周期 世间万物皆有生命周期,当我们使用任何工具时都需要理解它的工作原理,那么用起来就会得心应手,应用开发也是如此。理解了它的原理,那么使用起来就会游刃有余。 在了解 Laravel 的生命周期前,我们先回顾一下PHP 的生命周期。 PHP 的生命周期 PHP 的运行模式 PHP两种运行模式是WEB模式、CLI模式。 当我们在终端敲入php这个命令的时候,使用的是CLI模式。 当使用Nginx或者别web服务器作为宿主处理一个到来的请求时,使用的是WEB模式。 生命周期 当我们请求一个 php 文件时,PHP 为了完成这次请求,会发生5个阶段的生命周期切换: 模块初始化(MINIT),即调用 php.ini 中指明的扩展的初始化函数进行初始化工作,如 mysql 扩展。 请求初始化(RINIT),即初始化为执行本次脚本所需要的变量名称和变量值内容的符号表,如 $_SESSION 变量。 执行该PHP脚本。 请求处理完成(Request Shutdown),按顺序调用各个模块的 RSHUTDOWN 方法,对每个变量调用 unset 函数,如 unset $_SESSION 变量。 关闭模块(Module Shutdown) , PHP调用每个扩展的 MSHUTDOWN 方法,这是各个模块最后一次释放内存的机会。这意味着没有下一个请求了。 WEB模式和CLI(命令行