跨域请求
处于安全性考虑浏览器不允许ajax直接请求数据
图片.png
如:前端网站和后端网站接口不同,前端80后端3344,这时候因为端口不同,前后端联调时更多采用jsonp=>动态创建script标签,src指向数据接口地址
插入:
这里需要平凡的用到服务端开启关闭修改app.js程序,用
node app,js显然不是很好,我们可以用nodemon
以管理员身份运行vs code
执行:get-ExecutionPolicy,显示Restricted,表示状态是禁止的
执行:set-ExecutionPolicy RemoteSigned
这时再执行get-ExecutionPolicy,就显示RemoteSigned
图片.png
Jsonp原理客户端和服务器
新建文件node-server作为模拟客户端文件app.js
初始模板配置:
var http = require('http'); //导入http内置模块
http.createServer(function (request, response) { //创建并监听端口启动注意前端要配合端口
// response.writeHead(200, {'Content-Type': 'text/plain'});
// response.end('Hello World');
}).listen(8081);
console.log('Server running at http://127.0.0.1:8081/');
图片.png
服务端
//代码记录
//导入http内置模块
const http = require("http");
//创建一个http服务器监听http服务器request请求
const urlModule = require("url");
http
.createServer(function(request, response) {
// response.writeHead(200, { "Content-Type": "text/plain" });
// response.end("Hello World");
// const url = request.url;
const { pathname: url, query } = urlModule.parse(request.url, true);
if (url === "/getscript") {
//拼接一个合法的js脚本,这里拼接的是一个方法的调用
// var scriptStr = "show()";
var data = {
name: "imycode",
age: 1,
gender: "boy",
hobby: {
sports: ["swim", "football"],
singer: ["Zhou jay", "JJ"],
song: ["moonlight", "随便"]
}
};
var scriptStr = `${query.callback}(${JSON.stringify(data)})`;
//res.end发送给客户端,客户端去把这个字符串当作js代码解析
response.end(scriptStr);
} else {
response.end("404");
}
})
.listen(3000);
console.log("Server running at http://127.0.0.1:3000/");
课程P34_Day 2_19 记录
详解:json对象转化成json字符串拼到模板里去
图片.png
图片.png
图片.png
客户端请求服务端,服务端可以返回一个方法名调用,当然这个方法如果写死可以写到具体请求哪个方法,但是能写死吗?如果不写死
来看结构赋值:
const { pathname: url, query } = urlModule.parse(request.url, true);
//1. const {}
//2.
图片.png
客户端通过一个url地址请求服务器
- 在这里,我们先弄个简单的案例,
图片.png
//客户端代码,随便建一个html
<script>
function show() {
// console.log(data);
console.log("ok");
}
</script>
<script src="http://127.0.0.1:3000/getscript"></script>
const http = require("http");
http.createServer(function(request, response) {
const url = request.url;
if (url === "/getscript") {
var scriptStr = "show()";
response.end(scriptStr);
} else {
response.end("404");
}
})
.listen(3000);
console.log("Server running at http://127.0.0.1:3000/");
图片.png
以上的例子是,
图片.png
图片.png
图片.png
客户端请求js文件,服务器监听完返回合法的js文件
图片.png
图片.png
网友评论