http请求

微信小程序HTTP接口请求封装

醉酒当歌 提交于 2020-03-14 18:08:32
1.方法封装(新建文件夹util,工具文件,在文件夹下创建request.js文件,用于对方法封装) request.js: var app = getApp(); //项目URL相同部分,减轻代码量,同时方便项目迁移 //这里因为我是本地调试,所以host不规范,实际上应该是你备案的域名信息 var host = 'http://localhost:8081/demo/'; /** * POST请求, * URL:接口 * postData:参数,json类型 * doSuccess:成功的回调函数 * doFail:失败的回调函数 */ function request(url, postData, doSuccess, doFail) { wx.request({ //项目的真正接口,通过字符串拼接方式实现 url: host + url, header: { "content-type": "application/json;charset=UTF-8" }, data: postData, method: 'POST', success: function (res) { //参数值为res.data,直接将返回的数据传入 doSuccess(res.data); }, fail: function () { doFail(); }, }) } //GET请求,不需传参

requests模块

我的未来我决定 提交于 2020-03-14 04:21:21
一,介绍 requests模块是python中原生的基于网络请求的模块,其主要作用是用来模拟浏览器发起请求。功能强大,用法简洁高效。在爬虫领域中占据着半壁江山的地位。 使用requests可以模拟浏览器的请求,比起之前用到的urllib,requests模块的api更加便捷(本质就是封装了urllib3) 注意:requests库发送请求将网页内容下载下来以后,并不会执行js代码,这需要我们自己分析目标站点然后发起新的request请求 为什么要使用requests模块 因为在使用urllib模块的时候,会有诸多不便之处,总结如下: 手动处理url编码 手动处理post请求参数 处理cookie和代理操作繁琐 使用requests模块: 自动处理url编码 自动处理post请求参数 简化cookie和代理操作 二,使用 pip install requests 使用流程 指定url 基于requests模块发起请求 获取响应对象中的数据值 持久化存储 三,GET请求 import requests url = "https://www.sogou.com/web?" word = input("请输入关键词:").stript() #自定义请求头信息 headers = { "User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64)

百度面试题:从输入url到显示网页,后台发生了什么?

家住魔仙堡 提交于 2020-03-12 18:55:03
参考 http://igoro.com/archive/what-really-happens-when-you-navigate-to-a-url/ http://www.cnblogs.com/wenanry/archive/2010/02/25/1673368.html 原文:http://igoro.com/archive/what-really-happens-when-you-navigate-to-a-url/ 作为一个软件开发者,你一定会对网络应用如何工作有一个完整的层次化的认知,同样这里也包括这些应用所用到的技术:像浏览器,HTTP,HTML,网络服务器,需求处理等等。 本文将更深入的研究当你输入一个网址的时候,后台到底发生了一件件什么样的事~ 1. 首先嘛,你得在浏览器里输入要网址: 2. 浏览器查找域名的IP地址 导航的第一步是通过访问的域名找出其IP地址。DNS查找过程如下: 浏览器缓存 – 浏览器会缓存DNS记录一段时间。 有趣的是,操作系统没有告诉浏览器储存DNS记录的时间,这样不同浏览器会储存个自固定的一个时间(2分钟到30分钟不等)。 系统缓存 – 如果在浏览器缓存里没有找到需要的记录,浏览器会做一个系统调用(windows里是gethostbyname)。这样便可获得系统缓存中的记录。 路由器缓存 – 接着,前面的查询请求发向路由器

在浏览器中输入网址后是怎么跳转到指定的服务器的

血红的双手。 提交于 2020-03-12 18:53:10
1. 首先,在浏览器里输入网址 2. 浏览器查找域名的IP地址 DNS查找过程如下: 浏览器缓存 – 浏览器会缓存DNS记录一段时间。 操作系统没有告诉浏览器储存DNS记录的时间,所以不同浏览器会储存各自固定的一个时间(2分钟到30分钟不等)。 系统缓存 – 如果在浏览器缓存里没有找到需要的记录,浏览器会做一个系统调用(windows里是gethostbyname)。这样便可获得系统缓存中的记录。 路由器缓存 – 接着,前面的查询请求发向路由器,它一般会有自己的DNS缓存。 ISP DNS 缓存 – 接下来要check的就是ISP缓存DNS的服务器。在这一般都能找到相应的缓存记录。 递归搜索 – 你的ISP的DNS服务器从跟域名服务器开始进行递归搜索,从.com顶级域名服务器到Facebook的域名服务器。一般DNS服务器的缓存中会有.com域名服务器中的域名,所以到顶级服务器的匹配过程不是那么必要了。 DNS返回多个IP时的解决方案: 1.负载平衡器:是以一个特定IP地址进行侦听并将网络请求转发到集群服务器上的硬件设备。 一些大型的站点一般都会使用这种昂贵的高性能负载平衡器。 2. 地理DNS:根据用户所处的地理位置,通过把域名映射到多个不同的IP地址提高可扩展性。这样不同的服务器不能够更新同步状态,但映射静态内容的话非常好。比如输入google.com在中国返回www

Servlet初始化及处理HTTP请求

谁说我不能喝 提交于 2020-03-12 18:51:24
上一篇详细介绍了与Servlet相关的几个核心的接口和类,当我们自己写Servlet类时,一般需要继承HttpServlet类,实现init()、doGet()、doPost()等方法。当我们写好Servlet类时,它在什么时候被初始化(init())?什么时候执行doGet()、doPost()等方法?本篇重点介绍这两个问题。 1、Servlet初始化 之前的一篇《web.xml文件配置详解》中已经说过,我们自己写的Servlet类需要配置在<servlet-class>标签之中,同时还要配置<servlet-name>、<load-on-startup>、<servlet-mapping>等几个标签。下图说明了在web.xml文件中关于servlet配置的内容,<servlet-class>标签中的MainServlet类就是我们自己写的类。 当我们用Tomcat启动整个web项目时,当配置了<load-on-startup>标签并且里面的数字>=0时,会加载MainServlet类,创建MainServlet类的实例,调用init()方法初始化。在init()方法里面可以通过getServletConfig()方法获取ServletConfig对象,然后通过此对象的getInitParameter()等方法获取<init-param>标签里面的配置信息,并对配置文件进行解析

HTTP访问控制(跨域问题)

若如初见. 提交于 2020-03-12 11:25:09
跨域资源共享(CORS) 跨域资源共享( CORS ) 使用额外的 HTTP 头来告诉浏览器,让运行在一个 origin 域上的Web应用被准许访问来自不同源服务器上的指定的资源 主要是为了保护服务端资源 浏览器 本地缓存 也会受到跨域限制 cookie、storage、indexDB等 跨域指不同的 域名,协议或端口 例如http和https就是不同协议,从http协议的地址向同一域名下https协议的地址请求会产生跨域 整个CORS通信过程,都是浏览器 自动完成 ,不需要用户参与 浏览器一旦发现AJAX请求跨源,就会自动添加一些附加的头信息,有时还会多出一次附加的请求 因此, 实现CORS通信的关键是服务器 。只要服务器实现了CORS接口,就可以跨源通信 如果请求的Origin的值不在指定的许可范围,服务端返回一个 正常的HTTP回应 ,但这个回应的头信息 没有包含Access-Control-Allow-Origin字段 此时浏览器就知道跨域请求失败了 这种错误无法通过状态码识别 ,因为HTTP回应的状态码有可能是200 同源策略只是浏览器的一个安全策略 ,只适用于浏览器向服务器发送请求的时候 当 服务器跟服务器发送请求 的时候,自然就没有这么一层限制 跨域通信过程 对那些可能对服务器数据产生副作用的 非简单请求 方法,浏览器必须 首先使用 OPTIONS

HTTP协议详解

為{幸葍}努か 提交于 2020-03-12 09:38:18
1、持久化连接 http和server端没有明确释放连接就不断开连接。 2、管线化 保持持久连接就不用一个请求等到上一个连接的响应返回才发送下一个请求。 3、HTTP报文详解 http请求由多行数据构成的字符串文本 请求报文和响应报文如图所示 请求行包括请求方法,请求URI,HTTP版本 状态行包含表明响应结果的状态码,原因短语和HTTP版本 通用首部 Cache-Control:控制缓存的行为 Connection:管理持久连接 Date:首部字段Date表明HTTP报文的日期和时间 Trailer:表明报文主体记录字段,主体分块长度0后就是首部这里的字段 Transfer-Encoding:传输报文主体的编码方式 Upgrade:是否可升级更高版本协议 Via:追踪客户端和服务端之间的请求和响应报文的传输路径。 请求首部字段 Accept:用户代理能处理的媒体类型 Accept-charset:用户代理支持的字符集 Accept-Encoding:用户代理支持的内容编码 Accept-language:支持的语言 Authorization:用户代理信息 Expect:期望 From:用户电子邮箱 Host:用户端主机名 Referer:请求的原始资源的URI User-Agent:传递器种类 响应首部字段 Location:请求引导到其他URI 实体首部字段 Allow

XMLHTTPRequest状态status完整列表

╄→尐↘猪︶ㄣ 提交于 2020-03-12 07:38:33
原文链接: http://blogread.cn/it/article.php?id=168 AJAX中请求远端文件、或在检测远端文件是否掉链时,都需要了解到远端服务器反馈的状态以确定文件的存在 与否。 当然,在我们平常浏览网页时,也会发现一些文件不存在时显示为“404错误”,这就是常见的Http请求状态(status)   Web服务器响应浏览器或其他 客户 程序的请求时,其应答一般由以下几个部分组成:一个状态行,几个应答头,一个空行,内容文档。下面是一个最 简单 的应答:   状态行包含HTTP版本、状态代码、与状态代码对应的简短说明信息。在大多数情况下,除了Content-Type之外的所有应答头都是可选的。但Content-Type是必需的,它描述的是后面文档的MIME类型。虽然大多数应答都包含一个文档,但也有一些不包含,例如对HEAD请求的应答永远不会附带文档。有许多状态代码实际上用来标识一次失败的请求,这些应答也不包含文档(或只包含一个简短的错误信息说明)。   当用户试图通过 HTTP 访问一台正在运行 Internet 信息服务 (IIS) 的服务器上的内容时,IIS 返回一个表示该请求的状态的数字代码。状态代码可以指明具体请求是否已成功,还可以揭示请求失败的确切原因。 1xx - 信息提示 这些状态代码表示临时的响应。客户端在收到常规响应之前,应准备接收一个或多个

前端常见跨域解决方案(全)

时间秒杀一切 提交于 2020-03-11 21:53:21
什么是跨域? 跨域是指一个域下的文档或脚本试图去请求另一个域下的资源,这里跨域是广义的。 广义的跨域: 1.) 资源跳转: A链接、重定向、表单提交 2.) 资源嵌入:<link>、<script>、<img>、<frame>等dom标签,还有样式中background:url()、@font-face()等文件外链 3.) 脚本请求: js发起的ajax请求、dom和js对象的跨域操作等 其实我们通常所说的跨域是狭义的,是由浏览器同源策略限制的一类请求场景。 什么是同源策略? 同源策略/SOP(Same origin policy)是一种约定,由Netscape公司1995年引入浏览器,它是浏览器最核心也最基本的安全功能,如果缺少了同源策略,浏览器很容易受到XSS、CSFR等攻击。所谓同源是指”协议+域名+端口”三者相同,即便两个不同的域名指向同一个ip地址,也非同源。 同源策略限制以下几种行为: 1.) Cookie、LocalStorage 和 IndexDB 无法读取 2.) DOM 和 Js对象无法获得 3.) AJAX 请求不能发送 常见跨域场景 URL 说明 是否允许通信 http://www. domain.com/a.js http://www. domain.com/b.js 同一域名,不同文件或路径 允许 http://www. domain.com/lab

爬虫之爬虫概述

こ雲淡風輕ζ 提交于 2020-03-11 17:54:01
环境: anaconda anaconda: 是一个集成环境(数据分析+机器学习),提供了一个叫做jupyter的可视化工具(基于浏览器) 启动: cmd>jupyter notebook jupyter的基本使用: 快捷键: 插入cell:a,b 删除:x 执行:shift+enter 切换cell的模式:y,m tab:自动补全 打开帮助文档:shift+tab cell分为两种模式 code:编码 markdown:编写文本 一, 爬虫概述 什么是爬虫: 爬虫就是通过编写程序模拟浏览器上网,然后让其去互联网上抓取数据的过程。 爬虫的分类: 通用爬虫:通用爬虫是搜索引擎(Baidu、Google、Yahoo等)“抓取系统”的重要组成部分。主要目的是将互联网上的网页下载到本地,形成一个互联网内容的镜像备份。 简单来讲就是尽可能的;把互联网上的所有的网页下载下来,放到本地服务器里形成备分,在对这些网页做相关处理(提取关键字、去掉广告),最后提供一个用户检索接口。 搜索引擎如何抓取互联网上的网站数据? 门户网站主动向搜索引擎公司提供其网站的url 搜索引擎公司与DNS服务商合作,获取网站的url 门户网站主动挂靠在一些知名网站的友情链接中 聚焦爬虫:聚焦爬虫是根据指定的需求抓取网络上指定的数据。例如:获取豆瓣上电影的名称和影评,而不是获取整张页面中所有的数据值。 增量式爬虫