XHR

富文本编辑器(wangEditor)

白昼怎懂夜的黑 提交于 2021-01-14 05:41:05
 近期在产品的开发工作中遇到要使用富文本编辑器的地方。于是对比了几款编辑器, 最后选择了wangEditor。    优点 :轻量、简洁、界面美观、文档齐全。 缺点: 相较于百度ueditor等编辑器功能较少。 文档地址: https://www.kancloud.cn/wangfupeng/wangeditor3/332599   使用方式:    1. 创建一个容器 :    <div id="editor"> </div>    2.引入js文件    <script src="~/Editor/wangEditor.js"></script>    3.初始化   // 富文本编辑器 var E = window.wangEditor; var editor = new E("#editor")    editor.create()       4.上传图片    支持网络图片与本地上传    网络图片直接输入地址即可。    本地上传默认是关闭的。分为Base64与上传至服务器。    4.1 Base64格式      开启本地上传Base64      // 启用"上传图片"tab base64格式 editor.customConfig.uploadImgShowBase64 = true;      开启之后直接拖拽或手动选择上传即可。         

ajax跨域问题

家住魔仙堡 提交于 2021-01-13 05:46:16
跨域产生的原因 1、浏览器的限制 2、跨域,域名不一致,端口不一致 3、XHR(XMLHttpRequest)请求 三个同时存在才有可能产生跨域问题 解决跨域问题的思路 1、浏览器(通过指定参数让浏览器不去做校验,需要改动客户端,意义不大) 2、XHR(通过修改发出请求的类型,通过JSONP,动态创建script,在script中发送请求) 3、跨域   a)修改被调用,让其支持跨域 b)修改调用方,隐藏跨域,使用代理 2.XHR方式 JSONP:JSON的扩充模式,在请求中增加一个约定的参数,用于识别请求是jsonp请求,后台识别到为jsonp的请求时,就以javascript的方式返回 前台请求使用jsonp,后台需要增加jsonp的切入 弊端:1、服务器需要改动 2、只支持get的方法 3、发送的不是XHR请求     $.ajax({ url: "http://127.0.0.1:8080/test/get1" , dataType: "jsonp" , jsonp: "callback2" , success: function (result){ console.log(result); } }); @ControllerAdvice public class JsonpAdvice extends AbstractJsonpResponseBodyAdvice{

python爬虫:bilibili弹幕爬取+词云生成

五迷三道 提交于 2021-01-12 19:20:04
如果你懒得看下边的文字,我录了一个完整的教学视频在b站上。 我的B站教学 :https://www.bilibili.com/video/av75377135?p=2 工作原理 b站是提供弹幕接口的,所以我们的整体操作进行如下: 1. 到B站获取cid 2. 将cid与网站固定格式进行链接 3. 用python请求网页 4. 进行简单的单词处理 5. 生成词云 接下来我们就按照刚才说的顺序进行详细解释 操作顺序 1.到B站获取cid 首先点进一个视频网页,点击F12-network获取监测页面,然后一定要点击 播放视频 ,我们就会在监测页面中看到一个叫 heartbeat 的XHR脚本,点开任意一个即可。 点击之后我们需要看Headers,里边包括了我们想知道的信息。往下滚动就会发现cid,这个id是唯一的,也就是说下次抓取的时候还可以用这个id。 2.将cid与网站固定格式进行链接 我们拿到cid之后就可以去检查一下是否可以获取弹幕了。获取的固定xml格式是: https://comment.bilibili.com/视频的cid.xml 例如在这里我们的页面就是: 'https://comment.bilibili.com/94198756.xml' 我们把这个链接用网页的方式打开,就能看到如下内容: 这样我们就确定可以爬取了。 3.用python请求网页 因为是开源的

爬虫面试必备,几种验证码的解决方案

霸气de小男生 提交于 2021-01-11 09:56:43
点击上方“ Python学习开发 ”,选择“ 加为星标 ” 第一时间关注Python技术干货! 截止到今天咸鱼已经写了很多期关于 Js 逆向的文章,不过这么多的文章都有一个共同点,都是关于加密参数或者密码加密的解析,很多读者在后台私信希望能够出一些关于滑动验证或者人机验证的分析教程。 于是咸鱼总结了目前遇到过的的验证码类型以及总结出来的相关处理方式和大家聊一聊。 现在市面上的验证码的类型大致有下面几种类型。 图形验证码 比较常见的英文数字组合成的图形验证码,常常辅以各类 干扰线 和 扭曲 图片中的内容达到提高混淆难度的目的,并且通过加长图片中的文字长度提升识别成本。 7位英数-难度高 4位英数-难度中等 4位英数-难度低 像这类验证码的处理方案有很多种,简单给大家概括一下。 难度中低的两类验证码,安装 tesserocr ,通过 OCR 技术结合 Python 的 tesserocr 库可以就可以完成识别。如果验证码中带有简单干扰线可以使用灰度和二值化的方法提高代码的识别率。 常用示例代码: import tesserocr from PIL import Image image = Image .open( 'code2.jpg' ) image = image.convert( 'L' ) threshold = 127 table = [] for i in range(

原生ajax

时间秒杀一切 提交于 2021-01-09 11:50:50
原生ajax ajax依赖XMLHttpRequest对象 ​ var xhr = new XMLHttpRequest(); ​ xhr 有两个方法 ​ ①open(‘GET’,url,ture) 请求初始化 参数说明: 第一个参数:请求方式(比如get post) 第二个参数: url地址 第三个参数: 默认true ​ ②send() 发送请求 ​ xhr 有两个状态 ​ ①readyState ​ 0 请求未初始化 还未调用open方法 ​ 1 调用open方法, 但还没有调用send方法 ​ 2 send方法被调用了 请求正在发送… ​ 3 请求正在处理 ​ 4 请求成功 有返回值 ​ ②status ​ 200 请求成功 ​ 3xx 重定向 资源未找到,又指向另外一个地址 ​ 404 资源未找到 客户端错误 ​ 500 服务端错误 ​ xhr.responseText ​ 后端返回的数据 < script > var xhr = new XMLHttpRequest ( ) ; // ajax依赖 XMLHttpRequest对象 xhr . onreadystatechange = function ( ) { console . log ( xhr . readyState ) ; console . log ( xhr . status ) ; if ( xhr

Ajax与Layui

寵の児 提交于 2021-01-09 05:38:06
ajax :请求 响应 js //创建ajax对象 var xhr=new XMLHttpRequest(); //监听ajax状态 xhr.onreadystatechange=function(){ if(xhr.readyState == 4){ console.log(xhr.responseText); } } //发起请求 xhr.open('get','index.html?name=zhangsan&age=12'); // xhr.open('post','index.html?name=zhangsan&age=12'); //传数据 xhr.send(null); jQuery $.ajax({ async:true, //同步和异步 默认是的同步 同一个时间点允许执行多个过程 url:"fwq.php",//提交地址 data:{name:"zhangsan",age:12},//提交数据 type:'post',//默认get dataType:'text',//默认值text success:function(data){ } }); 来源: oschina 链接: https://my.oschina.net/u/4393301/blog/3901436

调试

ⅰ亾dé卋堺 提交于 2021-01-06 11:57:19
调试 - Chrome调试 打开开发人员工具 Ctrl+Shift+i可以打开开发人员工具。 功能面板 NetWork功能面板 在当前页面打开调试工具,刷新页面后点击NetWork可以查看当前页面的Http信息,这个信息是从发起请求到获得响应后为止。 控制/录制 资源列表 点击资源名称(name),右侧会打开关于该资源详细信息的面板。 Header 描述了请求头和响应头信息 Preview 预览资源的数据,比如image、js、css、html等 Response 响应的数据 Cookie 写入客户端的cookie Timing 请求建立连接时的各项耗时 调试JS 控制台输出 请求失败或页面js代码错误都会自动输出到控制台。 可调用console对象的log、error、warn方法输出数据 断点 打完断点 - 刷新页面 - 进入断点,F8终止调试,F10逐过程,F11逐语句(会进入函数内部),Shift+F11(误入函数内部后可跳出到外部) 定位函数 如果想进入该函数,但是该函数可能在另外一个文件中,该文件已经将函数封装得很深,此时光标移入调用函数的表达式可以看到提示该函数在哪个文件被定义,点击链接即可马上定位到该函数,然后可以进去打断点。 输出页面变量 Call Stack(栈帧) Breakpoints (断点列表) 可随时取消某个断点 XHR/fetch

HTTP长连接和短连接 + Websocket

☆樱花仙子☆ 提交于 2021-01-05 08:18:46
HTTP协议与TCP/IP协议的关系 HTTP的长连接和短连接本质上是TCP长连接和短连接。HTTP属于应用层协议,在传输层使用TCP协议,在网络层使用IP协议。IP协议主要解决网络路由和寻址问题,TCP协议主要解决如何在IP层之上可靠的传递数据包,使在网络上的另一端收到发端发出的所有包,并且顺序与发出顺序一致。TCP有可靠,面向连接的特点。 长连接短连接操作过程 短连接的操作步骤是: 建立连接——数据传输——关闭连接…建立连接——数据传输——关闭连接 长连接的操作步骤是: 建立连接——数据传输 …(保持连接)… 数据传输——关闭连接 长连接和短连接的优点和缺点 长连接可以省去较多的TCP建立和关闭的操作,减少浪费,节约时间。但是如果连接数比较多,会给服务器造成比较大压力。 短连接对于服务器来说管理较为简单,存在的连接都是有用的连接,不需要额外的控制手段。但如果客户请求频繁,将在TCP的建立和关闭操作上浪费时间和带宽。 什么时候用长连接,短连接 长连接多用于操作频繁,点对点的通讯,而且连接数不能太多情况。例如:数据库的连接用长连接, 如果用短连接频繁的通信会造成socket错误,而且频繁的socket 创建也是对资源的浪费。 而像WEB网站的http服务一般都用短链接,因为长连接对于服务端来说会耗费一定的资源

tomcat 下 base64图片上传超过2m的解决方案

爷,独闯天下 提交于 2021-01-03 07:20:17
方案一: tomcat部署下默认post请求提交参数大小为2M左右,超过这个大小,就会传值不成功 要使post请求参数无大小限制,需要在server.xml上修改,如下: <Connector port="8080" protocol="HTTP/1.1" connectionTimeout="2000" redirectPort="8443" URIEncoding="UTF-8" maxThreads="3000" compression="on" compressableMimeType="text/html,text/xml" maxPostSize="-1"/> <Connection port="8009" enableLookups="false" redirectPort="8443" debug="0" protocol="AJP/1.3" /> 其中参数maxPostSize="-1"是限制post请求参数的大小,tomcat7.0.63之前的版本设置为0和负数均可以代表不限制。但是7.0.63之后的版本只有设置为负数才代表不限制数据大小 方案二: 先用 js 判断 base64 大小,大于2m转为文件再上传。 getImgSize(str) { // 获取base64图片大小,返回KB数字 var str = base64url.replace('data

django

孤街醉人 提交于 2021-01-02 07:06:30
{{ form.as_table }} 以表格的形式将它们渲染在<tr> 标签中 {{ form.as_p }} 将它们渲染在 <p> 标签中 {{ form.as_ul }} 将它们渲染在 <li> 标签中 1 < form action ="" method ="post" novalidate > 2 {% csrf_token %} 3 < p > {{ form.name.label }} 4 {{ form.name }} 5 < span class ="pull-right error" > {{ form.name.errors.0 }} </ span > 6 </ p > 7 < p > {{ form.pwd.label }} 8 {{ form.pwd }} 9 < span class ="pull-right error" > {{ form.pwd.errors.0 }} </ span > 10 </ p > 11 < p > 确认密码 12 {{ form.r_pwd }} 13 < span class ="pull-right error" > {{ form.r_pwd.errors.0 }} </ span > 14 < span class ="pull-right error" > {{ errors.0 }} </ span >