jsonp

因为一个跨域请求,我差点丢了饭碗

萝らか妹 提交于 2020-08-16 06:58:24
浏览器基本原理 我叫小风,是Windows帝国一个普通的上班族。 今天,我入职了一家浏览器公司,公司的主营业务是为人类提供Internet上网服务,我的岗位是负责执行 JavaScript 代码。 上午的晨会上,认识了负责网络连接的老白,所有网络请求都得找他帮忙,还有负责存储管理的小黑,什么 Cookie , LocalStorage , SessionStorage 之类的都归他管。哦,差点忘了,还有一个妹子小雪,她负责网页渲染。 随后主管安排了我的工作:老白从网络取回网页之后交给小雪来解析渲染,遇到网页中的JavaScript代码的时候,就由我来处理执行这些代码。 听完主管的安排,我心里美滋滋,因为工作上需要密切配合,主管把我和小雪妹子的工位安排在了一起,想想都开心 _ || 坐下不久,我主动和小雪聊了起来。 “小雪,你平时工作都做些什么啊?” 小雪转过身来,“我呀,就负责把老白给我的HTML文件进行解析,构建DOM树,然后再拿到CSS文件,构建CSSOM树,最后把网页给画出来” 我似懂非懂的点了点头,正想继续找话题,这时,老白过来了。 “小雪,来活了,这是刚刚拿到的网页文件,快处理一下” 小雪转过身去开始忙碌了起来,不一会儿,她就停下来说到:“小风哥,有 <script> 标签了,该你上了” 看来该是我露一手的机会了,我拿到 <script> 中的代码,开始忙活起来

可以粘贴Word公式的编辑器

江枫思渺然 提交于 2020-08-15 16:35:43
由于工作需要必须将word文档内容粘贴到编辑器中使用 但发现word中的图片粘贴后变成了file:///xxxx.jpg这种内容,如果上传到服务器后其他人也访问不了,网上找了很多编辑器发现没有一个能直接解决这个问题 考虑到自己除了工作其他时间基本上不使用windows,因此打算使用nodejs来解决这一问题 发现不管什么编辑器只要将图片转换成base64后就可以直接使用(IE8及一下可能不支持),由于编辑器中添加word文档功能也只是自己用,因此可以忽略这种浏览器了 找了很久,试用了很多编辑器,发现只有ckeditor的功能还算符合我的需求(支持自定义HTML属性) 然后我写了一个监听粘贴事件的操作,用来获取粘贴之后的file:///xxxx.jpg这种路径 <script> var service = { http : require('http'), url : require('url'), querystring : require('querystring'), fs : require('fs'), config : { timeout : 60000, charset : 'utf8', port : 10101, host : '127.0.0.1' }, router : { index : function(res, query){ res.end(

搞懂:前端跨域问题JS解决跨域问题VUE代理解决跨域问题原理

て烟熏妆下的殇ゞ 提交于 2020-08-15 03:02:37
什么是跨域 跨域 : 一个域下的文档或脚本试图去请求另一个域下的资源 广义的跨域包含一下内容 : 1.资源跳转(链接跳转,重定向跳转,表单提交) 2.资源请求(内部的引用,脚本script,图片img,frame) 3.script内部发起的请求(ajax,dom请求,和js跨域调用 跨域问题出现 : 只有浏览器端出现,直接用终端请求,是不会出现跨域拦截,是属于浏览器端的安全策略,浏览器将不同源的请求进行了拦截,限制了跨域资源访问 什么是同源 同源策略:same origin policy,如果两个资源(页面)`协议`,`域名`,`端口`都相同,那么就是同源。 即使:两个不同域名指向同一个ip,也算非同源 非同源(跨域)有哪些限制 * cookie,localstorage,indexDB无法读取 * Dom和JS对象无法互通 * Ajax请求不能发送 常见的跨域demo URL 说明 是否允许通信 http://www.domain.com/a.js http://www.domain.com/b.js 同一域名,不同文件或路径 允许 http://www.domain.com/lab/c.js http://www.domain.com:8000/a.js http://www.domain.com/b.js 同一域名,不同端口 不允许 http://www.domain

因为一个跨域请求,我差点丢了饭碗

天涯浪子 提交于 2020-08-14 06:08:30
浏览器基本原理 我叫小风,是Windows帝国一个普通的上班族。 今天,我入职了一家浏览器公司,公司的主营业务是为人类提供Internet上网服务,我的岗位是负责执行 JavaScript 代码。 上午的晨会上,认识了负责网络连接的老白,所有网络请求都得找他帮忙,还有负责存储管理的小黑,什么 Cookie , LocalStorage , SessionStorage 之类的都归他管。哦,差点忘了,还有一个妹子小雪,她负责网页渲染。 随后主管安排了我的工作:老白从网络取回网页之后交给小雪来解析渲染,遇到网页中的JavaScript代码的时候,就由我来处理执行这些代码。 听完主管的安排,我心里美滋滋,因为工作上需要密切配合,主管把我和小雪妹子的工位安排在了一起,想想都开心^_^|| 坐下不久,我主动和小雪聊了起来。 “小雪,你平时工作都做些什么啊?” 小雪转过身来,“我呀,就负责把老白给我的HTML文件进行解析,构建DOM树,然后再拿到CSS文件,构建CSSOM树,最后把网页给画出来” 我似懂非懂的点了点头,正想继续找话题,这时,老白过来了。 “小雪,来活了,这是刚刚拿到的网页文件,快处理一下” 小雪转过身去开始忙碌了起来,不一会儿,她就停下来说到:“小风哥,有 <script> 标签了,该你上了” 看来该是我露一手的机会了,我拿到 <script> 中的代码,开始忙活起来

百度WebUploader中实现文件上传下载的三种解决方案(推荐)

依然范特西╮ 提交于 2020-08-13 12:40:43
需求:项目要支持大文件上传功能,经过讨论,初步将文件上传大小控制在500M内,因此自己需要在项目中进行文件上传部分的调整和配置,自己将大小都以501M来进行限制。 第一步: 前端修改 由于项目使用的是BJUI前端框架,并没有使用框架本身的文件上传控件,而使用的基于jQuery的Uploadify文件上传组件,在项目使用的jslib项目中找到了BJUI框架集成jQuery Uploadify的部分,这部分代码封装在bjui-all.js文件中, 在bjui-all.js文件中的全局变量定义中有以下部分代码,这就是定义的有关于上传的Uploadify控件的重要变量: //文件上传对象 function FileUploader(fileLoc, mgr) { var _this = this; this.id = fileLoc.id; this.ui = { msg: null, process: null, percent: null, btn: { del: null, cancel: null,post:null,stop:null }, div: null}; this.isFolder = false; //不是文件夹 this.app = mgr.app; this.Manager = mgr; //上传管理器指针 this.event = mgr.event; this

egg中间件

五迷三道 提交于 2020-08-13 02:18:35
中间件 :匹配路由前、匹配路由完成做的一系列的操作。 Egg 是基于 Koa 实现的,所以 Egg 的中间件形式和 Koa 的中间件形式是一样的,都是基于洋葱圈模型 Koa中的中间件: http://eggjs.org/zh-cn/intro/egg-and-koa.html#midlleware Egg中的中间件: http://eggjs.org/zh-cn/basics/middleware.html 一般来说中间件也会有自己的配置。在框架中,一个完整的中间件是包含了配置处理的。我们约定一个中间件是一个放置在 app/middleware 目录下的单独文件,它需要 exports 一个普通的 function,接受两个参数: options: 中间件的配置项,框架会将 app.config[${middlewareName}] 传递进来。 app: 当前应用 Application 的实例。 demo: app/middleware文件下 创建中间件forbidip.js和printdate.js中间件: module.exports = (options, app) => { // 返回一个异步的方法 return async function forbidIp(ctx,next){ // 要屏蔽的id : 1.从数据库获取 2、从参数传入 var forbidips=

详解浏览器跨域的几种方法

余生长醉 提交于 2020-08-13 01:04:30
摘要: 本文针对浏览器的跨域特性,做一下深入介绍,以便我们在进行WEB前端开发和测试时,对浏览器跨域特性有全面的理解和掌握。 1 前言 在 WEB 前端开发中,我们经常会碰到“跨域”问题,最常见的就是浏览器在 A 域名页面发送 B 域名的请求时会被限制。跨域问题涉及到 WEB 网页安全性问题,使用不当会造成用户隐私泄露风险,但有时业务上又需要进行跨域请求。如何正确的使用跨域功能,既能满足业务需求,又能够满足安全性要求,显得尤为重要。 本文针对浏览器的跨域特性,做一下深入介绍,以便我们在进行 WEB 前端开发和测试时,对浏览器跨域特性有全面的理解和掌握。 2 背景知识介绍 2.1 同源政策 1995 年,同源政策由 Netscape 公司引入浏览器。目前,所有浏览器都实行这个政策。 最初,它的含义是指, A 网页设置的 Cookie , B 网页不能打开,除非这两个网页 “ 同源 ” 。所谓 “ 同源 ” 指的是 “ 三个相同 ” : 协议相同 域名相同 端口相同 同源政策的目的,是为了保证用户信息的安全,防止恶意的网站窃取数据。 设想这样一种情况: A 网站是一家银行,用户登录以后, A 网站在用户的机器上设置了一个 Cookie ,包含了一些隐私信息(比如存款总额)。用户离开 A 网站以后,又去访问 B 网站,如果没有同源限制, B 网站可以读取 A 网站的 Cookie

一文梳理同源策略与跨域技术

北战南征 提交于 2020-08-12 05:11:13
1.同源策略 同源策略是一个重要的安全策略,它用于限制一个origin的文档或者它加载的脚本如何能与另一个源的资源进行交互。它能帮助阻隔恶意文档,减少可能被攻击的媒介。 1.1何谓同源 ? 如果两个 URL 的 protocol 、 port (如果有指定的话)和 host 都相同的话,则这两个 URL 是 同源 。这个方案也被称为“协议/主机/端口元组”,或者直接是 “元组”。 下表给出了与 URL http://store.company.com/dir/page.html 的源进行对比的示例: URL 结果 原因 http://store.company.com/dir2/other.html 同源 只有路径不同 http://store.company.com/dir/inner/another.html 同源 只有路径不同 https://store.company.com/secure.html 失败 协议不同 http://store.company.com:81/dir/etc.html 失败 端口不同 ( http:// 默认端口是80) http://news.company.com/dir/other.html 失败 主机不同 随着互联网的发展,"同源政策"越来越严格。目前,如果非同源,共有三种行为受到限制。 (1) Cookie、LocalStorage 和

.NET Core 3.1 跨域请求 (CORS)

江枫思渺然 提交于 2020-08-11 23:50:17
.NET Core 3.1 跨域请求 (CORS) 在用ajax进行请求服务器资源时如果协议+主机名+端口号 (如存在)相同则允许交互,否则会出现跨域问题,不能访问和操作其他域下的资源。常用解决方式有在前端使用jsonp和在后端启用CORS。 jsonp可以支持get请求,但不支持post请求。完美的解决方案还是服务器端启用CORS。在.NET Core 3.1 启用CORS变得非常简单,不需要像早期的.NET CORE版本需要手动安装CORS程序包,只需要2步就可以完成。 1、添加策略 打开服务器端项目的“Startup.cs”文件,找到ConfigureServices(IServiceCollection services)方法,添加如下代码。 services.AddCors(options => { options.AddPolicy("any", builder => { builder.AllowAnyOrigin().AllowAnyMethod().AllowAnyHeader(); }); }); 代码表示在注入cors中间件: “any”表示策略名称,可以随便起,在第2步会用到; AllowAnyOrigin表示允许任何域; AllowAnyMethod表示允许任何方法; AllowAnyHeader表示允许任何消息头。 如果是允许指定的域、方法

超详细 Nginx 极简教程,傻瓜一看也会!

天涯浪子 提交于 2020-08-11 23:07:48
作者:静默虚空 www.cnblogs.com/jingmoxukong/p/5945200.htm 什么是Nginx? Nginx (engine x) 是一款轻量级的Web 服务器 、反向代理服务器及电子邮件(IMAP/POP3)代理服务器。 什么是反向代理? 反向代理(Reverse Proxy)方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客户端,此时代理服务器对外就表现为一个反向代理服务器。 安装与使用 安装 nginx官网下载地址: http://nginx.org ,发布版本分为 Linux 和 windows 版本。 也可以下载源码,编译后运行。 从源代码编译 Nginx 把源码解压缩之后,在终端里运行如下命令: $ ./configure $ make $ sudo make install 默认情况下,Nginx 会被安装在 /usr/local/nginx。通过设定编译选项,你可以改变这个设定。 Windows 安装 为了安装 Nginx / Win32,需先下载它。然后解压之,然后运行即可。下面以 C 盘根目录为例说明下: cd C: cd C: ginx-0.8.54 start nginx Nginx / Win32 是运行在一个控制台程序,而非