http请求

nginx源码分析——http处理流程

对着背影说爱祢 提交于 2020-01-07 07:28:06
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 1. http处理流程概述 nginx对于http请求处理的大概流程是:接收客户端发起的连接,然后接收并解析http请求行,接收并解析http头部;再根据配置文件nginx.conf找到相关http模块,使这些模块依次合作处理http请求,最后发送http响应并结束http请求。 在整个http请求处理过程中,nginx通过连接的读写事件,以及定时器机制,异步回调完成其处理流程。 2. http新连接的建立 在 事件模块 一文中我们知道,当新连接建立后会回调对应侦听的处理方法。对于http模块,该回调方法为ngx_http_init_connection。在该方法中,主要完成的事情是:设置连接的读事件回调处理方法为ngx_http_wait_request_handler,设置连接的写事件回调处理方法为ngx_http_empty_handler;然后查看读事件是否已经准备好,即连接对应的套接字缓冲区上是否已经接收到用户的请求数据了,如果是,则直接调用ngx_http_wait_request_handler进入下一处理步骤;如果还没有准备好,则对连接的读事件设置定时器,同时将读事件添加到事件驱动中,等待下一次回调处理。 void ngx_http_init_connection(ngx_connection

http协议之响应协议

烂漫一生 提交于 2020-01-07 06:01:33
一.响应协议的格式如下: 1.响应首行 2.响应头信息 3.空行 4.响应体 二.post请求: 1.数据不会出现在地址栏中 2.数据的大小没有上限 3.有请求体 4.请求体中如果存在中文,会使用url编码 三.get请求 http协议默认的请求方式是get请求 1.get请求数据会暴露在浏览器地址栏中 2.没有请求体 3.数据必须在4k内 来源: https://www.cnblogs.com/startl/p/12151744.html

重定向Http status code 303 和 302

二次信任 提交于 2020-01-06 21:40:18
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> Http 302 302是一个普通的重定向代码。直观的看来是,请求者(浏览器或者模拟http请求)发起一个请求,然后服务端重定向到另一个地址。而事实上,服务端仅仅是增加一条属性到header,location=重定向地址。而一般的,浏览器会自动的再去请求这个location,重新获取资源。也就是说,这个会使得浏览器发起两次请求。 Example Client request: GET /index.html HTTP/1.1 Host: www.example.com Server response: HTTP/1.1 302 Found Location: [http://www.iana.org/domains/example/](http://www.iana.org/domains/example/) 来源: oschina 链接: https://my.oschina.net/crazybeginner/blog/3153349

Django 必会面试题总结

风格不统一 提交于 2020-01-06 18:22:22
文章转自 https://blog.csdn.net/weixin_43063753/article/details/85559540 目录 欢迎关注 1 列举Http请求中常见的请求方式 2 谈谈你对HTTP协议的认识。1.1 长连接 3 简述MVC模式和MVT模式 4 简述Django请求生命周期 5 简述什么是FBV和CBV 6 谈一谈你对ORM的理解 7 rest_framework 认证组件的流程 8 什么是中间件并简述其作用 9 django 中间件生命周期 10 django中怎么写原生SQL 11 如何使用django orm批量创建数据 12 命令migrate 和makemigrations的差别 14 常用视图响应的方式是什么? 15 HTTP响应常见状态码分类 16 路由匹配原则是什么? 17 缓存系统类型有哪些 18 解决跨域的常用方式是什么? 19 信号的作用是什么? 20 Django的Model的继承有几种形式,分别是什么 21 Django中查询queryset时什么情况下用Q 22 Django中想验证表单提交是否格式正确需要用到Form中的哪个函数 23 orm如何取消级联 24 Django中如何读取和保存session,整个session的运行机制是什么 25 简述Django对http请求的执行流程 25

requests

☆樱花仙子☆ 提交于 2020-01-06 18:22:00
目录 1.安装 2.引入 3.请求方式 3.1 GET请求 3.1.1 基本请求 3.1.2 GET请求的主要参数 3.2 POST请求 3.2.1 使用POST请求模拟登陆 4.响应 4.1 响应参数 5.其他 requests官方中文文档: https://requests.readthedocs.io/zh_CN/latest/ 1.安装 pip install requests 2.引入 import requests # 发送请求获取响应内容 response = request.get('http://www.baidu.com') 3.请求方式 3.1 GET请求 HTTP默认的请求方法就是GET 没有请求体 数据必须在1K之内 GET请求数据会暴露在浏览器的地址栏中 GET请求常用的操作: 在浏览器的地址栏中直接给出URL,那么就一定是GET请求 点击页面上的超链接也一定是GET请求 提交表单时,表单默认使用GET请求,但可以设置为POST 3.1.1 基本请求 import requests # 发送请求获取响应内容 response = request.get('http://www.baidu.com') print(response.text) 3.1.2 GET请求的主要参数 url 请求资源的路径 headers User-Agent

爬虫(爬虫原理与数据抓取)

ε祈祈猫儿з 提交于 2020-01-06 18:21:18
爬虫(爬虫原理与数据抓取) 通用爬虫和聚焦爬虫 根据使用场景,网络爬虫可分为 通用爬虫 和 聚焦爬虫 两种. 通用爬虫 通用网络爬虫 是 捜索引擎抓取系统(Baidu、Google、Yahoo等)的重要组成部分。主要目的是将互联网上的网页下载到本地,形成一个互联网内容的镜像备份。 通用搜索引擎(Search Engine)工作原理 通用网络爬虫 从互联网中搜集网页,采集信息,这些网页信息用于为搜索引擎建立索引从而提供支持,它决定着整个引擎系统的内容是否丰富,信息是否即时,因此其性能的优劣直接影响着搜索引擎的效果。 第一步:抓取网页 搜索引擎网络爬虫的基本工作流程如下: 首先选取一部分的种子URL,将这些URL放入待抓取URL队列; 取出待抓取URL,解析DNS得到主机的IP,并将URL对应的网页下载下来,存储进已下载网页库中,并且将这些URL放进已抓取URL队列。 分析已抓取URL队列中的URL,分析其中的其他URL,并且将URL放入待抓取URL队列,从而进入下一个循环… 搜索引擎如何获取一个新网站的URL: 新网站向搜索引擎主动提交网址:(如百度http://zhanzhang.baidu.com/linksubmit/url) 在其他网站上设置新网站外链(尽可能处于搜索引擎爬虫爬取范围) 搜索引擎和DNS解析服务商(如DNSPod等)合作,新网站域名将被迅速抓取。

.Net Standard Http请求实例

倖福魔咒の 提交于 2020-01-06 15:45:40
原文 一 、.Net Standard http协议封装 程序集: System.Net.Http.dll 命名 空间:System.Net.Http HttpClient :http请求 发送类 FormUrlEncodedContent:Http请求表单参数 HttpResponseMessage: http请求相应操作 HttpContent:http请求相应内容读取 二、Http Get请求示例 //使用 HttpClient创建Get请求 HttpClient client = new HttpClient(); Task<HttpResponseMessage> resp = client.GetAsync("http://www.gongjuji.net"); resp.ContinueWith(q => { //获取相应状态 HttpResponseMessage respMsg = q.Result; Console.WriteLine(respMsg.StatusCode); //获取相应内容 HttpContent respClient = respMsg.Content; respClient.ReadAsStringAsync().ContinueWith(str => { string result = str.Result; Console

request

删除回忆录丶 提交于 2020-01-06 00:55:23
目录 1.安装 2.引入 3.请求方式 3.1 GET请求 3.1.1 基本请求 3.1.2 GET请求的主要参数 3.2 POST请求 3.2.1 使用POST请求模拟登陆 4.响应 4.1 响应参数 5.其他 requests官方中文文档: https://requests.readthedocs.io/zh_CN/latest/ 1.安装 pip install requests 2.引入 import requests # 发送请求获取响应内容 response = request.get('http://www.baidu.com') 3.请求方式 3.1 GET请求 HTTP默认的请求方法就是GET 没有请求体 数据必须在1K之内 GET请求数据会暴露在浏览器的地址栏中 GET请求常用的操作: 在浏览器的地址栏中直接给出URL,那么就一定是GET请求 点击页面上的超链接也一定是GET请求 提交表单时,表单默认使用GET请求,但可以设置为POST 3.1.1 基本请求 import requests # 发送请求获取响应内容 response = request.get('http://www.baidu.com') print(response.text) 3.1.2 GET请求的主要参数 url 请求资源的路径 headers User-Agent

http status 汇总

纵饮孤独 提交于 2020-01-05 22:35:49
http status 汇总 常见 HTTP 状态码 200 OK 301 Moved Permanently 302 Found 304 Not Modified 307 Temporary Redirect 400 Bad Request 401 Unauthorized 403 Forbidden 404 Not Found 410 Gone 500 Internal Server Error 501 Not Implemented 100 Continue 初始的请求已经接受,客户应当继续发送请求的其余部分 101 Switching Protocols 服务器将遵从客户的请求转换到另外一种协议 200 OK 一切正常,对GET和POST请求的应答文档跟在后面 201 Created 服务器已经创建了文档,Location头给出了它的URL。 202 Accepted 已经接受请求,但处理尚未完成。 203 Non-Authoritative Information 文档已经正常地返回,但一些应答头可能不正确,因为使用的是文档的拷贝 204 No Content 没有新文档,浏览器应该继续显示原来的文档。如果用户定期地刷新页面,而Servlet可以确定用户文档足够新,这个状态代码是很有用的 205 Reset Content 没有新的内容,但浏览器应该重置它所显示的内容

requests

為{幸葍}努か 提交于 2020-01-05 22:35:23
requests 1. requests库的7中主要方法: 1. requests.requst()构造一个请求,支撑一下各个方法的基础方法 2. requests.get()获取HTML网页中的主要方法,对应于http的get方法 1. requests.get(url,params=None,**kwargs) 2. url:拟获取页面的url链接 3. parmas:url中的额外参数,字典或字节流格式,可选 4. **kwargs:12个控制访问的参数 3. requests.head()获取HTML网页中的头信息的的方法,对应http的head方 1. requests.head(url,**kwargs) 2. url:拟获取页面的url链接 3. **kwargs:12个控制访问的参数 4. requests.post()向HTML网页提交post请求方法,对应http的post方法 1. requests.post(url,data=None,json=None,**kwargs) 2. url:拟更新的页面的url链接 3. data:字典或字节序列或文件,request的内容 4. json:JSON格式的数据,request的内容 5. **kwargs:11个控制访问的参数 5. requests.put()向HTML网页提交put请求方法