XHR

Postman-关于设置

送分小仙女□ 提交于 2020-10-29 20:41:51
用Postman的时候由于没有中文版,所以想设置的完全符合自己的使用习惯不太容易,于是找了下关于设置的使用并转载记录一下,链接:https://www.jianshu.com/p/518ab60ebef7 一、进入设置 在Postman应用程序的标题工具栏中,点击扳手图标,然后选择设置(Settings)打开SETTINGS窗口。您还可以使用键盘快捷键(CMD / CTRL +,)打开设置窗口。 二、常规设置(General Settings) Postman尽量减少必须更改的设置数量,因此我们建立了一些默认设置。但是,考虑到用例的多样性,如果您需要进行调整,那么如下: 1. 在请求中装饰键和值(Trim keys and values in request body) : 如果使用表单数据(form-data )或网址编码(url-encoded)模式将数据发送到服务器,将其切换为ON将导致任何参数被装饰。 2. SSL证书验证(SSL certificate verification) (仅限本机应用程序):防止应用程序在发出请求时检查SSL证书的有效性。详细了解管理客户端证书。 3. 语言检测(Language detection) : 将此设置为JSON将强制JSON呈现,而不管Content-Type标题的响应。 4. XHR超时(ms)

手把手教你使用Python抓取QQ音乐数据(第一弹)

孤人 提交于 2020-10-29 05:10:43
点击上方“ IT共享之家 ”,进行关注 回复“ 资料 ”可获赠Python学习福利 【一、项目目标】 获取 QQ 音乐指定歌手单曲排行指定页数的歌曲的歌名、专辑名、播放链接。 由浅入深,层层递进,非常适合刚入门的同学练手。 【二、需要的库】 主要涉及的库有:requests、json、openpyxl 【三、项目实现】 1.了解 QQ 音乐网站的 robots 协议 只禁止播放列表,可以操作。 2.进入 QQ 音乐主页 https://y.qq.com/ 3.输入任意歌手,比如邓紫棋 4.打开审查元素(快捷键 Ctrl+Shift+I) 5.分析网页源代码 Elements,发现无歌曲信息,无法使用 BeautifulSoup,如下图所示,结果为空。 6.点击 Network,看数据在不在 XHR(无刷新更新页 面),我的经验是先看 Size 最大的,然后分析 Name, 查看 Preview,果然在里面! 7.点击 Headers,拿到相关参数。如下图,仔细观察 url 与 Query String Parameters 参数的关系,发现 url 中的 w 代表歌手名,p 代表页数。 8.通过 json 代码实现,首先小试牛刀,爬取第一页 的数据,url 直接复制过来。成功! 9.引入 params 参数,实现指定歌手、指定页数的查询。 注意代码url为上一步url中“?

10 —— node —— 获取文件在前台遍历

丶灬走出姿态 提交于 2020-10-29 05:03:46
思想 : 前台主动发起获取 =》 ajax 1,前台文件 index.html <!DOCTYPE html> <html lang="en"> <head>   <meta charset="UTF-8">   <meta name="viewport" content="width=device-width, initial-scale=1.0">   <meta http-equiv="X-UA-Compatible" content="ie=edge">   <title>Document</title>   <style>     body{       background: skyblue;       padding: 50px;     }   </style> </head> <body> <h1>获取文件夹</h1> <div id="div"></div> <script>   var xhr = new XMLHttpRequest();   xhr.open('get','/file_list');   xhr.send();   xhr.onreadystatechange = function(){     if(xhr.readyState == 4){     /*     *   json 转 数组     */     var data =

手把手教你使用Python抓取QQ音乐数据(第一弹)

|▌冷眼眸甩不掉的悲伤 提交于 2020-10-29 04:45:25
点击上方“ IT共享之家 ”,进行关注 回复“ 资料 ”可获赠Python学习福利 【一、项目目标】 获取 QQ 音乐指定歌手单曲排行指定页数的歌曲的歌名、专辑名、播放链接。 由浅入深,层层递进,非常适合刚入门的同学练手。 【二、需要的库】 主要涉及的库有:requests、json、openpyxl 【三、项目实现】 1.了解 QQ 音乐网站的 robots 协议 只禁止播放列表,可以操作。 2.进入 QQ 音乐主页 https://y.qq.com/ 3.输入任意歌手,比如邓紫棋 4.打开审查元素(快捷键 Ctrl+Shift+I) 5.分析网页源代码 Elements,发现无歌曲信息,无法使用 BeautifulSoup,如下图所示,结果为空。 6.点击 Network,看数据在不在 XHR(无刷新更新页 面),我的经验是先看 Size 最大的,然后分析 Name, 查看 Preview,果然在里面! 7.点击 Headers,拿到相关参数。如下图,仔细观察 url 与 Query String Parameters 参数的关系,发现 url 中的 w 代表歌手名,p 代表页数。 8.通过 json 代码实现,首先小试牛刀,爬取第一页 的数据,url 直接复制过来。成功! 9.引入 params 参数,实现指定歌手、指定页数的查询。 注意代码url为上一步url中“?

关于 Blob

梦想与她 提交于 2020-10-25 21:53:33
博客地址: https://ainyi.com/88 对于 Blob,前端开发中可能比较少遇到;数据库中可使用 Blob 概念,例如 Mysql 存储二进制数据的类型就是 Blob,也就是说图片可存储于数据库中,以二进制格式存储 Blob 对象表示一个不可变、原始数据的类文件对象。File 接口基于Blob,继承了 blob 的功能并将其扩展使其支持用户系统上的文件 Blob 是二进制数据对象,是类文件对象的二进制数据 我在之前有篇博客说到 Blob: 利用 Blob 处理 Node 层返回的二进制文件流字符串并下载文件 这里我利用 Blob 实现文件拆分再合并下载的方法,算是第一次使用 我们最常见的应该是 Blob URL 技术,文件上传的预览、视频播放的 src,均是采用这种技术实现 Blob URL 就是以 blob: 开头的一段地址,指向的是一个二进制数据 使用 URL.createObjectURL(blob) 方法生成,参数为 Blob 对象 这个 Blob URL 是可以直接访问的;需要注意的是这个 URL 的生效时间,等同于网页的存在时间,一旦网页刷新或关闭,这个 Blob URL 就失效 构造函数 Blob(blobParts[, options]) 返回一个新创建的 Blob 对象,其内容由参数中给定的数组串联组成 参数说明: blobParts:数组类型

Ajax的面向对象的封装(ES5和ES6)ajax+php

前提是你 提交于 2020-10-25 10:17:16
我们来捋一下Ajax的概念,JS语言是单线程的语言、异步与同步。 JS是一门单线程的语言,所以JS语言写出来的程序也是单线程的程序。 学习ajax首先需要了解在编程中的异步与同步的概念。 异步和同步 同步 :程序发出请求需要等待当前请求执行结束才能进行下一步的操作。 异步 :程序发出请求不需要等待当前请求结束就能进行下一步的操作。 a jax的实现 我们要完成一个基本的ajax交互操作只需要四步即可。 创建异步对象: let xhr = new XMLHttpRequest(); 指定请求的方式/端口/文件: xhr.open('get','./a.txt',true); 发送请求: xhr.send(); 异步对象监听状态的变化(通过状态码): xhr.addEventListener('readystatechange',function(e){ if( xhr.readyState == 4 ){ console.log(xhr.responseText); } } ,false); 0:请求为初始化 1:服务器连接已建立 2:请求已接收 3:请求处理中 4:请求已完成,且响应已就绪 这是最基本的实现,然后接下来进行对ajax的封装,使用es5和es6的两种方式进行面向对象的封装: <script> let a = new ajax({ url:"./../地址",// 必填

九种跨域方式实现原理(完整版)

六眼飞鱼酱① 提交于 2020-10-25 04:13:05
前后端数据交互经常会碰到请求跨域,什么是跨域,以及有哪几种跨域方式,这是本文要探讨的内容。 一、什么是跨域? 1.什么是同源策略及其限制内容? 同源策略是一种约定,它是浏览器最核心也最基本的安全功能,如果缺少了同源策略,浏览器很容易受到XSS、CSFR等攻击。所谓同源是指"协议+域名+端口"三者相同,即便两个不同的域名指向同一个ip地址,也非同源。 同源策略限制内容有: Cookie、LocalStorage、IndexedDB 等存储性内容 DOM 节点 AJAX 请求发送后,结果被浏览器拦截了 但是有三个标签是允许跨域加载资源: <img src=XXX> <link href=XXX> <script src=XXX> 2.常见跨域场景 当协议、子域名、主域名、端口号中任意一个不相同时,都算作不同域。不同域之间相互请求资源,就算作“跨域”。常见跨域场景如下图所示: 特别说明两点: 第一:如果是协议和端口造成的跨域问题“前台”是无能为力的。 第二:在跨域问题上,仅仅是通过“URL的首部”来识别而不会根据域名对应的IP地址是否相同来判断。“URL的首部”可以理解为“协议, 域名和端口必须匹配”。 这里你或许有个疑问:请求跨域了,那么请求到底发出去没有? 跨域并不是请求发不出去,请求能发出去,服务端能收到请求并正常返回结果,只是结果被浏览器拦截了

如何在Go中编写多行字符串?

寵の児 提交于 2020-10-24 04:03:42
问题: Does Go have anything similar to Python's multiline strings: Go是否与Python的多行字符串相似? """line 1 line 2 line 3""" If not, what is the preferred way of writing strings spanning multiple lines? 如果不是,编写跨多行字符串的首选方式是什么? 解决方案: 参考一: https://stackoom.com/question/XHr2/如何在Go中编写多行字符串 参考二: https://oldbug.net/q/XHr2/How-do-you-write-multiline-strings-in-Go 来源: oschina 链接: https://my.oschina.net/u/4438370/blog/4281585

前端常见一些安全问题及解决方案

廉价感情. 提交于 2020-10-23 04:10:10
今天小编给大家说说前端常见一些安全问题及解决方案,有兴趣的小伙伴可以了解一下! 一、CSRF安全 漏洞 CSRF是通过仿造客户端的请求获取信息的,对于jsonp的请求,客户端确实可以仿造,但是因为对于ajax的请求,有同源策略限制,已经做了域名过滤,所以一般不会有问题。 解决方案: 1、检查报头中的referer参数确保请求发自正确的网站 (但XHR请求课调用setRequestHeader方法来修改Referer报头) 2、对于任何重要的请求都需要重新验证用户的身份; 3、创建一个唯一的令牌(token),将其存在服务端的session中及客户端的cookie中, 对任何请求, 都检查二者是否一致。 二、XSS安全漏洞 通过URL带入的,这种带入主要是前端解析url中的参数,并对数参数执行了innerHTML 或者 html 或者 append 操作。在将参数html()或者append()到html文件中时,会执行其中的js代码,被错误用户获取到cookie等信息。 示例: 原始链接 : https://xx.xxx.com/efly.html?link=cc 被XSS注入以后的链接 : https://xx.xxx.com/efly.html?link=eeec<img src=1 onerror=alert(document.cookie)> 解决

webix-jet微引擎配置问题解决

为君一笑 提交于 2020-10-22 10:20:48
默认安装webix-jet微引擎后出现问题: ①只能在本地使用localhost 或 127.0.0.1访问; ②解决①后使用域名访问出现 Invalid Host header ③项目启动后,使用console观看前端一直发送 http://localhost:8080/sockjs-node/info?t=XXX 解决方法: 第一个问题: 修改:node_modules/webpack-dev-server/lib/Server.js 第777行,原来为: return this.listeningApp.listen(port, hostname, (err) => { 修改为:return this.listeningApp.listen(port, (err) => { //去掉hostname: 774 listen(port, hostname, fn) { 775 this.hostname = hostname; 776 777 return this.listeningApp.listen(port, (err) => { 778 this.createSocketServer(); 779 780 if (this.options.bonjour) { 781 runBonjour(this.options); 782 } 第二个问题: