关于前端jsonp跨域和一个简单的node服务搭建
先讲下概念 同源策略:是一种约定,浏览器最核心最基本的安全功能,(同域名,同协议,同端口)为同源 跨域: 跨(跳):范围
域 (源):域名,协议,端口 域名:ip的一种昵称(为了更好记住ip地址)如:http:baidu.com 其实就是 ip地址119.75.217.109,为了更好的记住使用了域名代替 协议:http(localhost),file(本地),https,ftp... 端口:当前服务器中对应服务的标识(一个服务器中有n个的端口号且不可以重复) 如: http://localhost:80/ 这里80就是本机服务的一个端口 解决跨域: 跨域方式有8-9个,常用的有3个 1、高版本 浏览器的XMLHttpRequest+后端的请求头(前端正常ajax请求,后台设置Access-Control-Allow-Origin)
2、服务器代理:需要服务端跨源访问别的数据,这个服务器文件又和当前同源,当前服务器文件就是同源的 3、jsonp: jsonp+padding 内填充数据,低版本也支持,但是只有get请求,没有post请求 使用jsonp条件: 1、数据必须是函数名+括号的 fn(a) 需要后台配合创建这个数据 2、前端需要全局定义一个函数取接收数据,function fn(a){a} 3、通过script请求 简单的说完概念后,当然就是上代码了: html部分,这里的js是内嵌式
<!DOCTYPE html>
<html lang="en">
<head id="h">
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<button id="bun">跨域啊</button>
<script src="../js/jquery.js"></script>
<script> var js=''; //定义一个全部变量来储存创建的script标签 function fn(data){//必须要和js.src连接中的callBack=fn的fn名字一致 console.log(data);//拿到后台的数据 [1,2,3,4,5]
$('#js').remove();//删除创建的script标签
}
$('#bun').onclick=function () { js=document.createElement('script');//动态创建script标签 js.id='js';//创建一个is给标签,方便在使用完成后删除这个创建的script标签 js.src='http://localhost:9008/get?callBack=fn';//这里的服务是拿node写的,指定的是本地的9008端口中的get路由 $('#h').append(js);//把创建的script标签放到head 标签中
} </script>
</body>
</html>
这里的服务是基于node的express 创建的
安装express:npm install express
服务代码:
let expree=require('express'),//导入express
app=expree(); app.get('/get', function(req, res) {//创建get路由 var _callback = req.query.callBack;//获取到传递参数的回调 var _data = [1,2,3,4,5];//随便写个数据,这里用的是数组 if (_callback){//判断传递参数的回调 res.type('text/javascript');//指定文件格式 res.send(_callback + '(' + JSON.stringify(_data) + ')');//把获取的函数名和要传递的数据拼接返回给前端
}
else{//如果没有传递参数的回调处理
res.json(_data);
}
});
app.listen(9008,function () {//监听服务
console.log('开启了服务器');
})
一个简单粗暴的跨域就完成了!
关于前端jsonp跨域和一个简单的node服务搭建的更多相关文章
- 前端 - jsonp 跨域ajax
jsonp 跨域ajax原理: 浏览器同源策略限制 如何解决同源策略限制: 方式一: 利用创建script块,在其中执行src属性为 远程url 异域 用函数(返回值) 的形式返回参数 方式二: jq ...
- Jsonp跨域原理及简单应用
浏览器的同源策略: 同源策略(Same Origin Policy)是一种约定,它是由Netscape提出的一个著名的安全策略,它限制了从同一个源加载的文档或脚本如何与来自另一个源的资源进行交互.这是 ...
- 利用JS跨域做一个简单的页面访问统计系统
其实在大部分互联网web产品中,我们通常会用百度统计或者谷歌统计分析系统,通过在程序中引入特定的JS脚本,然后便可以在这些统计系统中看到自己网站页面具体的访问情况.但是有些时候,由于一些特殊情况,我们 ...
- 利用JS跨域做一个简单的页面訪问统计系统
事实上在大部分互联网web产品中,我们一般会用百度统计或者谷歌统计分析系统,通过在程序中引入特定的JS脚本,然后便能够在这些统计系统中看到自己站点页面详细的訪问情况.可是有些时候,因为一些特殊情况,我 ...
- Jsonp跨域访问原理和实例
>>什么是跨域 出于安全方面的考虑,页面中的JavaScript无法访问其他服务器上的数据,当前域名的js只能读取同域下的窗口属性,即同源策略.而跨域就是通过某些手段来绕过同源策略限制,实 ...
- 前端跨域问题相关知识详解(原生js和jquery两种方法实现jsonp跨域)
1.同源策略 同源策略(Same origin policy),它是由Netscape提出的一个著名的安全策略.同源策略是一种约定,它是浏览器最核心也最基本的安全功能,如果缺少了同源策略,则浏览器的正 ...
- [1.6W字] 浏览器跨域请求限制的详细原理分析&寻找一种最简单的方式实现XHR跨域(9种方法, 附大招可以纯前端实现跨域!)
Title/ 浏览器跨域(CrossOrigin)请求的原理, 以及解决方案详细指南 #flight.Archives011 序: 最近看到又有一波新的创作活动了, 官方给出的话题中有一个" ...
- 前端跨域之jsonp跨域
jsonp跨域原理 原理:因为通过script标签引入的js是不受同源策略的限制的(比如baidu.com的页面加载了google.com的js).所以我们可以通过script标签引入一个js或者一个 ...
- jsonp跨域简单应用(一)
转载:http://www.cnblogs.com/cyg17173/p/5865364.html ashx+jsonp+document.referrer -- 一年前学的JSONP 跨域,一年 ...
随机推荐
- Keil debug command SAVE 命令保存文件的解析
简介 使用 Keil debug 很方便,把内存中的一段区域 dump 出来也很方便,例如使用命令 SAVE filepath startAddr, endAddr, typeCode .但是要查看 ...
- 基础篇-1.2Java世界的规章制度(下)
1 Java运算符 Java世界中的运算其实就是数学运算,而运算符就是其中的媒介. 算术运算符 操作符 描述 + 加法,对符号两边的数值相加 - 减法,符号左边的数减去右边的数 * 乘法,符号两边的数 ...
- 基于SDN网络的负载均衡研究与实现
为什么需要软件定义网络 1.网络缺乏可扩展性,创新正在停滞不前. 我们最新的研究发现,几乎每两个组织中就有一个认为需要将网络功能扩展为采用SDN的主要业务触发因素,而不是其他催化剂.这一统计数据一 ...
- Codeforces1144D(D题)Equalize Them All
D. Equalize Them All You are given an array aa consisting of nn integers. You can perform the follow ...
- (读论文)推荐系统之ctr预估-NFM模型解析
本系列的第六篇,一起读论文~ 本人才疏学浅,不足之处欢迎大家指出和交流. 今天要分享的是另一个Deep模型NFM(串行结构).NFM也是用FM+DNN来对问题建模的,相比于之前提到的Wide& ...
- JAVA对象实例化方式总结
JAVA对象实例化的方法 New对象实例 // 直接new对象实例 Productor productor = new Productor(); 反射机制 Java反射机制是在运行状态中,对于任意一个 ...
- 【Android Studio】使用 Genymotion 调试出现错误 INSTALL_FAILED_CPU_ABI_INCOMPATI
RT -- 解决方法参考: https://my.oschina.net/u/242764/blog/375909 http://blog.csdn.net/wjr2012/article/detai ...
- 【iOS】arc4random() 产生随机数
通过 arc4random() 获取 0 到 x-1 之间的整数的代码如下: int value = arc4random() % x; 获取 1 到 x 之间的整数的代码如下: ; PS: 这里用到 ...
- 安装使用xen虚拟化工具
换了一家新公司,需要拿出一套虚拟化方案,就把业界的主流虚拟化技术划拉了一遍,给领导交了一份报告,具体的技术部分已经在之前的随笔里了,本篇文章主要介绍的是xen虚拟化工具的安装: Xen官方部署文档:h ...
- go 学习之路(二)
一.文件名 关键字 标识符 所有go源码都以.go结尾 标识符以字母或下划线开头,大小写敏感 a.boy b.Boy c.a+b d.0boy e._boy f.=_boy g._ 以上变量c.d.f ...