node实现jsonp跨域
1. 搭建node server
//引入模块
var http=require("http");
var fs=require("fs");
var url = require('url');
var querystring = require('querystring');
//创建服务器
var server=http.createServer();
server.on("request",function(req,res){
console.log(req.url.split('?')[1])
var urlpath=url.parse(req.url).pathname;
var qs = querystring.parse(req.url.split('?')[1]);//callback=result
if(urlpath === '/jsonp'){
res.writeHead(200,{'Content-Type':'application/json;charset=utf-8'});
function isJson(obj){
return typeof(obj)=="object"&&Object.prototype.toString.call(obj).toLowerCase()=="[object ]"
}
fs.readFile("fs.json",function(err,data){
if(err){console.log(err)}
data=JSON.parse(data);//因为data是buffer要把他变成json
data=JSON.stringify(data)
var callback = qs.callback+'('+data+');';//callback:test({json})
res.end(callback);//res.end参数为buffer或者string
})
}else{
res.writeHead(200, {'Content-Type':'text/html;charset=utf-8'});
res.end('Hell World\n');
}
});
server.listen("3000");
console.log("server running at localhost:3000");
前端代码:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>jsonp</title>
</head>
<body>
<div id="box">hahahaha</div>
<button id="but">click it</button>
<script>
function test(data){
alert(data.name);
}
</script>
<script src="http://localhost:3000/jsonp?callback=test"></script>
</body>
</html>
node实现jsonp跨域的更多相关文章
- 借助node实战JSONP跨域
一.前言: 浏览器安全是基于同源策略的.所谓同源策略就是三相同: 1.协议相同: 2.域名相同: 3.端口相同. 但,凡事都是有利弊,同源策略也导致了我们想用AJAX跨域请求,但NO!!为了规避这种限 ...
- Jsonp跨域访问
很早之前看过好几篇跨域访问的文章,然后做项目的时候基本没有遇到跨域访问的问题.不过该来的还是会来,前些天终于让我遇到了.于是重温了一下原理这些,再进行实战.于是现在也敢通过实战后的一些理解来和大家分享 ...
- 深入浅出:了解jsonp跨域的九种方式
什么是“”跨域”: 跨域访问,简单来说就是 A 网站的 javascript 代码试图访问 B 网站,包括提交内容和获取内容.由于安全原因,跨域访问是被各大浏览器所默认禁止的.当一个域与其他域建立了信 ...
- 原生JS封装Ajax插件(同域&&jsonp跨域)
抛出一个问题,其实所谓的熟悉原生JS,怎样的程度才是熟悉呢? 最近都在做原生JS熟悉的练习... 用原生Js封装了一个Ajax插件,引入一般的项目,传传数据,感觉还是可行的...简单说说思路,如有不正 ...
- jsonp跨域+ashx(示例)
前言 做B/S项目的时候,我们一般使用jquery+ashx来实现异步的一些操作,比如后台获取一些数据到前台,但是如果ashx文件不在本项目下,引用的是别的域下的文件,这时候就访问不了.关于jsonp ...
- jsonp 跨域请求
背景: JavaScript是一种在Web开发中经常使用的前端动态脚本技术.在JavaScript中,有一个很重要的安全性限制,被称为"Same-Origin Policy"(同源 ...
- 我的jsonp跨域问题
关于jsonp跨域问题,在这个方面也是了解一点点,先记录下来,主要作为以后查看,之前下载并安装过wampserver,了解到了jsonp和json的区别,现在谈谈跨域这个问题: 首先什么是跨域,简单地 ...
- jsonP跨域调用
-------------------------------------jsonP跨域调用------------------------------------- <div class=&q ...
- JSONP跨域的原理解析( 一种脚本注入行为)
JavaScript是一种在Web开发中经常使用的前端动态脚本技术.在JavaScript中,有一个很重要的安全性限制, 被称为“some-Origin Policy”(同源策略).这一策略对于Jav ...
随机推荐
- 清除Chrome浏览器的历史记录、缓存
习惯了用360卫士清理浏览器缓存.历史记录等垃圾文件,但是今天用360清理过后,打开谷歌浏览器Chrome时, 发现它的历史记录(CTRL+ H)根本没有被清理掉,经过一番探索后,可以通过下面方法清除 ...
- Halcon一日一练:Halcon异常判断方法
1.TryCatch tryCatch处理的方式如下: try *可能会出现错误的语句 .... catch(Exception) *获取错误代码 ErrorCode:=Exception[] **对 ...
- 解决ubuntu系统root用户下Chrome无法启动问题
由于ubuntu16.04系统自带的是Firefox浏览器,需要安装Chrome浏览器,但是在root用户下安装后发现,Chrome无法正常启动.安装及问题解决具体如下: 1. ubuntu上Chro ...
- Unity AssetBundle 游戏资源分类及关系
--刚刚做完一个xlua的的热更项目,对AssetBundle资源分类总结一下.纯理论,闲谈知识,要是有建议,尽管提 ,不掺杂代码. --这里说说,AB是如何打包,如果下载,如何加载. 1.关键词理解 ...
- rsync命令解释
-v, --verbose 详细模式输出-q, --quiet 精简输出模式-c, --checksum 打开校验开关,强制对文件传输进行校验-a, --archive 归档模式,表示以递归方式传输文 ...
- 【转】globk中的控制文件
globk_comb.cmd * This group must be first eq_file ../tables/eq_renames make_svs ../tables/sat1.apr c ...
- 2018-01-28-TF源码做版本兼容的一个粗暴方法
layout: post title: 2018-01-28-TF源码做版本兼容的一个粗暴方法 key: 20180128 tags: IT AI TF modify_date: 2018-01-28 ...
- window对象的属性
还不是很了解,以后补充frames opener parent
- Windows系统安装pip方法
pip是一款非常方便的python包管理工具,本文主要介绍在windows 10系统下安装pip方法. 1. 下载pip 地址:https://pypi.python.org/pypi/pip#dow ...
- Python学习笔记(二):字典
字典由多个键及与其对应的值构成的键值对构成,字典中键唯一,值不唯一. 1)dict 函数: >>>items=[('name','lilei'),('age',12)] >&g ...