引入 在我们日常开发Web应用程序时,通常依赖HTTP协议来实现客户端与服务器之间的通信。在这种模式下,浏览器发起请求,服务器处理并响应这些请求。...,后台将进行接收,同时,前端会一直发送一个请求(一般间隔1s),用于获取后端接收到的数据,获取到就显示在前端页面,没获取到就继续发送请求。...轮询的实现使用的 Ajax + setInterval 对于输入框的数据,使用 Ajax 在页面不刷新的情况下,将数据发给后台: function sendMessage(){ var text...这时就可以使用长轮询,相较于轮询,长轮询的区别是前端发送的请求到后端,如果没有得到响应,不会立刻消失,而会等待几十秒,若在这几十秒内获取到了数据,则返回给前端,前端继续发请求;若没获取到数据,且等待响应超时...,则取消前端请求与后台的连接,并重新再发送一个请求。
在设计接口时,我们除了使用 HTTPS 协议进行通信外,还需要有自己的一套加解密机制,对请求参数进行保护,防止被篡改。 如何防篡改? 对请求包进行签名可以有效地防篡改。...具体过程如下: 客户端使用约定好的密钥对传输的参数进行加密,得到签名 sign1,一般使用 HMAC 客户端将签名也放入请求的参数中,发送请求给服务端。...服务端接收到客户端的请求,然后使用约定好的秘钥对请求的参数再次进行签名,得到签名 sign2。 服务端比对 sign1 和 sign2,如果一致,认定为合法请求。...后台拿到 timestamp,nonce 和签名后,使用相同的算法计算出一个签名 sign2 与前端带来的签名 sign1 做比较,如果不一致,说明请求非法,直接拒绝。...DDoS 清洗会对用户请求数据进行实时监控,及时发现 DOS 攻击等异常流量,在不影响正常业务开展的情况下清洗掉这些异常流量。 (8)CDN 加速。
,个人开发者难以达到要求,所以具体实现我并没有实践过,但是我重点要分享的时下面使用第三方工具进行微信授权。...,改请求时post请求,并且携带参数 特别注意:当我们写后台回调时,使用controller,并且创建RequestMapping(""),改请求的路径必须是你创建应用是填写的url 代码示例...微信扫码登录获取微信用户信息Demo实现流程 实现效果 登录界面 当微信扫码后 * 手机端 PC端 登录成功后 * 后台拿到数据 前端显示信息 实现过程 由于使用码上登录必须使用公网...轮询(polling):客户端按规定时间定时向服务端发送ajax请求,服务器接到请求后马上返回响应信息并关闭连接。 Ajax轮询需要服务器有很快的处理速度与快速响应。...4) 前端生成二维码之后进行Ajax轮询,发送请求询问后端是否拿到了用户的信息,如果没有拿到,说明没有人扫二维码,继续轮询,如果拿到了,则结束Ajax轮询,设置二维码过期,不许再使用。
,在没有足够知识和人才储备的情况下,只能让前端人员加班加点。...有没有能力创建出符合 RESTful 风格的 API? 是否有能力维护 API 接口?当前端或者后台需要修改接口时,是否能轻松地修改。 前后端协作的成本高不高?前端和后台两个团队是不是很容易合作?...是不是可以轻松地进行联调?前后端职责是否能明确?即:后台提供数据,前端负责显示。 是否建立了前端的错误追踪机制?能否帮助我们快速地定位出问题。 前后端分离如何规划? 怎么做前后端分离?...I/O密集型操作,在处理并发量比较大的请求上能力比较强,因此,利用它来充当前端服务器,向客户端提供静态文件以及响应客户端的请求,我觉得这是一个很不错的选择。...前端服务器如何部署 nodejs前端服务器的职责 作为静态文件服务器,当用户访问网站的时候,将index.html以及其引入的js、css、fonts以及图片返回给用户 负责将客户端发来的ajax请求转发给后台服务器
先看效果 在部署状态页面点击查看日志,将会打开日志页面,下个图就是日志的输出页面。 简约时尚小清新的日志页面出来了,是不是很想一个terminal,有没有觉得俺弄的页面很漂亮。...哈哈哈哈,写不好前端的运维不是好DBA。 刚开始拿到这个需求,咋觉得很难。因为在服务器上我们看一个日志,经常会tail -f 看着刷屏的感觉倍爽。如何在web页面上实现tailf的效果呢?...后来想想这样实现是可行的。前端写一个js定时器,不断的发ajax请求到后台,每回取出一段日志。...这部分就是ajax请求了,取出日志内容,动态添加到页面上,唯一的一个坑是,setInterval,我原来写的是一个while的死循环,在循环体里日志取到最后一行的时候break。...我擦,逻辑上很流畅有没有,死活没效果,死活不工作。后来知道了,while搞的太快,不等后台返回,就走到下一次循环了。要不while里面来个sleep。要不弄个定时器,后来上了一个定时器,爽歪歪!
但由于各种方式千奇百怪,我觉得有必要将各种方法封装起来,方便使用,弄了个简单的跨域使用库,里面包含各种跨域的使用函数,都存放在steamer-cross v1.0分支里。...跨域方法 -- 单向 jsonp 这是最直观的办法,只需要一个页面,在页面内包含一个指向数据页面的script tag,然后在src后面多加一个回调函数即可以获取数据。...cross origin resource sharing (cors) 这个办法前后端都涉及,因此前端的同学需要后端的配合。...其实质只是一个ajax,可以接收除了post和get之后的其它服务器请求例如put。后端需要修改的是.htaccess文件。...另外一个隐藏坑是,ie10以下的浏览器是不支持的。值得注意的是,ie8和ie9是通过XDomainRequest来进行CORS通信的。XDomainRequest同样支持get和post方法。
XSS涉及到三方,即攻击者、客户端与Web应用 XSS的攻击目标是为了盗取存储在客户端的cookie或者其他网站用于识别客户端身份的敏感信息。...,但是如果攻击者绕开前端请求,直接构造请求就不能预防了 而如果在后端写入数据库前,对输入进行过滤,然后把内容给前端,但是这个内容在不同地方就会有不同显示 例如: 一个正常的用户输入了 5 在写入数据库前,被转义,变成了 5 < 7 在客户端中,一旦经过了 escapeHTML(),客户端显示的内容就变成了乱码( 5 < 7 ) 在前端中,不同的位置所需的编码也不同。...浏览器会默认携带a.com的Cookie a.com接收到请求后,对请求进行验证,并确认是受害者的凭证,误以为是受害者自己发送的请求 a.com以受害者的名义执行了act=xx 攻击完成,攻击者在受害者不知情的情况下...,服务器需要给这个用户生成一个Token 对于GET请求,Token将附在请求地址之后。
没有错误信息,我怎么知道请求成功还是失败。。这是在挑战我的智商吗? (建议:下次遇到这样的,直接揍一顿,就说是我说的。下面这张图送给你们后台吧。)...多层嵌套的json,在中间的某一层后台返回的是null,这种情况解析起来很麻烦的。...get一下: 正确做法: 字段结构不能随意修改,不管有没有数据返回都不要随意修改,没有数据的就搞一些默认空值填上去。...后台跟前端或者客户端交互都要靠接口,接口写不好,还谈什么交互? 所以,能写出好的接口的人,至少有一点可以看出来,基础是比较扎实的。 2.它是代码规范素养的一种体现。...后台哥们技术一般,代码又是老项目,它也很多搞不懂,跟他沟通无效,简直是浪费时间,没办法自己去处理吧。 所以 后台java 一定要严格按java编程规范来做,写出规范的接口给别人使用。他好你也好。
采⽤哪种认证⽅式来让⽤户登录,并保存相应的状态? 是否有⾜够的技术来⽀撑前后端分离?有没有能⼒创建出符合 RESTful 风格的API? 是否有能⼒维护 API 接口?...当前端或者后台需要修改接⼜时,是否能轻松地修改?前端和后台两个团队是不是很容易合作?是不是可以轻松地进⾏联调? 前后端职责是否能明确?即:后台提供数据,前端负责显⽰。 是否建⽴了前端的错误追踪机制?...能否帮助我们快速地定位出问题。 前后端分离的核⼼:后台提供数据,前端负责显⽰ 前提 RESTful API 统一约束客户端和服务器之间的接口。简化和分离系统架构,使每个模块独立!...URI,同时应该遵循一个可预测的层次结构来提高可理解性,从而提高可用性; 无需在URI中增加版本号,通过HTTP请求头信息的字段中进行区分(或者在URI包含主版本信息,同时请求头包含子版本信息。...通过请求体携带资源发送给服务器。注意:在资源ID由客户端而不是由服务器选择的情况下,也可以使用PUT来创建资源。修改成功返回200,创建成功返回201。建议使用post进行创建新资源。
3.有没有遇到过这种情况 在ie浏览器中 后台图片数据已经改变 但是客户端没有发生改变 该怎么处理?...后退按钮是一个标准的web站点的重要功能,但是它没法和js进行很好的合作。这是Ajax所带来的一个比较严重的问题,因为用户往往是希望能够通过后退来取消前一次操作的。那么对于这个问题有没有办法?...后台接收前端数据,根据业务需求访问数据库进行增删改查 4. 数据库返回后台程序所需要的数据 5. 后台拿到数据库数据,进行合理的处理,比如JSON串,返回给前端 6....第一种: JSONP,利用传递方法名的方式,告诉后台前端方法名是什么,后台取到后,在名称后面拼接(),把数据(DATA)放到小括号中,返回前端,相当于返回:方法名(data)到前端后就直接调用这个方法了...eval可以计算某个字符串,有没有更好的方式?
因为HTTP协议实际上是无状态的协议,前台的请求提交给后台之后,一般情况下都是后台处理完成才会向前台返回处理结果。如果想前台展示处理进度,有三个方法: 一、使用flush()函数。...另外,这种办法实际上是一个流式的结果输出,在形式上很难有美观的展现。 二、使用JS控制任务进度。...更好的办法我觉得应该是使用JS在前端来控制多个任务提交的顺序,从而在前端计算整体的进度来用图形化的方式展现。 三、后台实现进度记录,前台进行展现。...也可以采用后端使用持久化数据来记录整体计划于当前进度,前端JS定时异步调用查询结果的方式来实现前端的展示。我在一个Zip文件包解压并处理的程序中采用了第二种方式,大家可以根据项目的具体情况来选用。...因为我的后台处理过程都是在领带的ajax请求中完成的,所以采取了一个折衷的办法,ajax请求完成后,将进度写入到cookie中,然后FusionCharts定时从cookie中读取进度来进行展示。
幂等与重复请求区别 幂等:多次请求,在第一次请求不知道结果(比如超时)或者失败的异常情况下,发起多次请求,但却不会因多次请求而出现数据变化。...重复请求:多次请求,第一次请求已经成功的前提下,后续多次进行请求,如果后端服务非幂等服务,则每次请求均会进行数据改变;如果后端是幂等服务,则每次请求返回数据不会变化。...API 给 客户端同事,上线后出现这样一个bug,当时没有完善的业务监控系统,功能上线后第二天问出于好奇系统里积分最高的人有多少积分,就在后台跑了一个sql,这一好奇,惊奇的发现有的用户积分高达几万分,...,原因是签到按钮虽然变灰,但是请求的 url 没有在前端页面隐藏,用户通过技术手段绕过 button 变灰的前端限制重复刷新了接口,重复获得积分。...,如果流水号存在直接返回上一次请求结果,考虑到并发的情况下,状态判断使用了锁处理。
this setTimeout(() => { console.log(this); }, 500); 3.setInterval路由跳转继续运行并没有及时进行销毁 比如一些弹幕,走马灯文字,这类需要定时调用的...,路由跳转之后,因为组件已经销毁了,但是setInterval还没有销毁,还在继续后台调用,控制台会不断报错,如果运算量大的话,无法及时清除,会导致严重的页面卡顿。...解决办法:在组件生命周期beforeDestroy停止setInterval // 组件销毁前执行的钩子函数,跟其他生命周期钩子函数的用法相同。...clearInterval(this.intervalId); }, 4.vue 滚动行为用法,进入路由需要滚动到浏览器底部、头部等等 使用前端路由,当切换到新路由时,想要页面滚到顶部,或者是保持原先的滚动位置...实现vue路由拦截浏览器的需求,进行一系列操作,如草稿保存等等 场景:为了防止用户失误点错关闭按钮等等,导致没有保存已输入的信息(关键信息)。
4 开头一般是客户端出现的问题 400 错误请求,客户端发送了一条异常请求,可能是域名不存在 401 未授权,登陆失败,用户名和密码错误 403 请求被拒绝,无权限访问 用setTimeout来实现setInterval...请你讲一下,使用setTimeout()方法来模拟setInterval()与直接使用setInterval()有什么区别 settimeout调用自身 垂直居中的方法 有哪些可以实现垂直居中的方法...防御手段:不信任任何客户端提交的数据,只要是客户端提交的数据就应该先进行相应的过滤处理然后方可进行下一步的操作。 Sql脚本注入原理?如何进行?防御手段?...如何进行:利用现有应用程序,将(恶意)的SQL命令注入到后台数据库引擎执行的能力,它可以通过在Web表单中输入(恶意)SQL语句得到一个存在安全漏洞的网站上的数据库,而不是按照设计者意图去执行SQL语句...Timeout 在服务器许可的等待时间内,客户一直没有发出任何请求。
信息收集 a、获取域名的whois信息,获取注册者邮箱姓名电话等,丢社工库里看看有没有泄露密码,然后尝试用泄露的密码进行登录后台。用邮箱做关键词进行丢进搜索引擎。...CSRF是跨站请求伪造攻击,XSS是实现CSRF的诸多手段中的一种,是由于没有在关键操作执行时进行是否由用户自愿发起的确认。...1)使用安全的API 2)对输入的特殊字符进行Escape转义处理 3)使用白名单来规范化输入验证方法 4)对客户端输入进行控制,不允许输入SQL注入相关的特殊字符 5)服务器端在提交数据库进行SQL查询之前...常见加密方式xxx ddos如何防护 有没有抓过包,会不会写wireshark过滤规则 清理日志要清理哪些 四、SQL注入防护 1、使用安全的API 2、对输入的特殊字符进行Escape转义处理...不一定需要存储型XSS 十一、CSRF 1、CSRF原理 CSRF是跨站请求伪造攻击,由客户端发起,是由于没有在关键操作执行时进行是否由用户自愿发起的确认 2、防御 验证Referer 添加token
a、信息收集 1、获取域名的whois信息,获取注册者邮箱姓名电话等,丢社工库里看看有没有泄露密码,然后尝试用泄露的密码进行登录后台。用邮箱做关键词进行丢进搜索引擎。...CSRF是跨站请求伪造攻击,XSS是实现CSRF的诸多手段中的一种,是由于没有在关键操作执行时进行是否由用户自愿发起的确认。...1、使用安全的API 2、对输入的特殊字符进行Escape转义处理 3、使用白名单来规范化输入验证方法 4、对客户端输入进行控制,不允许输入SQL注入相关的特殊字符 5、服务器端在提交数据库进行SQL查询之前...常见加密方式xxx ddos如何防护 有没有抓过包,会不会写wireshark过滤规则 清理日志要清理哪些 SQL注入防护 1、使用安全的API 2、对输入的特殊字符进行Escape转义处理 3、使用白名单来规范化输入验证方法...不一定需要存储型XSS CSRF CSRF原理 CSRF是跨站请求伪造攻击,由客户端发起,是由于没有在关键操作执行时进行是否由用户自愿发起的确认 防御 验证Referer 添加token token和referer
一个显而易见的好处是,只要客户端总是使用Link Rel来获取URI,那么服务端可以在不破坏客户端实现的情况下实现URI的修改,从而进一步解耦客户端和服务端。...另一个容易被忽视的优势是它可以帮助客户端开发者探索API,Links实际上提示了开发者接下来可以进行何种业务操作,开发者虽然精通技术,但往往对于业务不甚了解,这些提示可以帮助他们理解业务,至少是一个查询...反映在API上,可能你希望能够修正API的URI,在非HATOEAS的项目中,由于URI是在客户端硬编码的,即使你把它们设计的非常漂亮(准确的HTTP动词,以复数命名的资源,禁止使用动词等等),也不能帮助你更容易地修改它们...当然,你不可能保证所有API的URI都是通过Link来获取的,你需要安排一些Root Resource,例如 /api/currentLoggedInUser,否则客户端没有办法发起第一次请求。...消除重复的业务规则校验实现,更容易得适应变化 经验告诉我们,不能相信客户端的请求,所以在服务端我们需要根据业务规则校验当前的请求是否合法。
下面我就对上面这些问题给出我自己的拙见,希望能对读者有所帮助2....客户端实现2.1 初始版本想法:每次客户端发起的请求会被服务器端gateway拦截,此时在gateway中判断token是否无效(过期):过期则返回一个特定的状态码(可以自定义也可以用HTTPStatus...不要在失败的时候发送,而是提前检查存在本地的token有没有过期,当检查token过期时间小于一个临界点,则异步调用刷新token方法,更新现有的token信息,此时是不是就解决上面的问题,只要是服务器端...onPageRender,由于在测试中发现当通过导航栏访问的页面情况下会导致定时器给kill掉了,无法刷新token,发送新请求的时候就会报错,所以最好的方法是在每个页面上添加onPageRender...怎么选择在服务器端实现的好处如下:安全性: 在服务器端进行token刷新可以更好地控制和保护token的安全性,避免将敏感信息暴露给客户端减少客户端逻辑: 客户端无需过多关注token刷新逻辑,降低了客户端的复杂性和维护成本
不知道大家在做项目的时候有没有遇到过这样一个需求:让其他同学访问到自己电脑上的网页或服务。...再比如我之前在开发微信公众号后台服务时,需要填写一个服务的域名来接受来自微信侧的请求: 最开始我是填写的某个服务器对应的域名,但后来发现把服务部署到服务器上后调试非常不方便,所以在想着要是微信侧能直接请求我自己电脑上的服务就好了...先简单解释一下,大多数情况下,我们的个人电脑都处于内网,即没有可公开访问的独立 IP 地址(上网要通过其他网关),因此其他内网用户找不到你,就没办法和你建立连接。...NATAPP 这个工具可以帮助你在公网和本地电脑之间建立一个安全的通道,从而实现内网传透,还能对通道上的流量进行分析。 用法非常简单!打开官网,注册登录后,先新建一个隧道。...举个例子,假如你在自己电脑的 3000 端口启动了个前端 web 项目,那隧道协议就选择 Web、端口选择 3000。
我们可以使用redis像使用内存一样,很方便的用来存在各类数据。3.操作具有原子性。所有Redis操作都是原子操作,这确保如果两个客户端并发访问,Redis服务器能接收更新的值。4.丰富的特性。...像底层的数据库要具备高精准的要求,则注定它的效率会差一点,所以当请求很大时,一般不会直接将请求进入到底层数据库去,而是先通过高效的redis,从它的缓存中去看看有没有请求想要的结果,如果没有再去底层数据库里操作...使用Nodejs操作Redis 先来NPM官网查一下看看有哪些开源好用的redis工具包[1]。 ? 看得出来使用最多的包就是redis包了,我们在本地进行安装。...秒 redis.expire('hello', 6); // 定时器每两秒读一次 setInterval(()=> { redis.get('hello', function (err, value...缓存的使用场景实例 接下来再看一点深度的例子,看看redis的在一些实际场景下的使用。