同源策略
JavaScript 的浏览器都会使用这个策略。所谓同源是指,域名,协议,端口相同。
而所有非同源的请求(即 域名,协议,端口 其中一种或多种不相同),都会被作为跨域请求。实际上请求发了, 也返回了数据, 只是浏览器检测到时非同源的数据, 就会被浏览器丢掉
然后标签发出的请求不会被同源策略检测到, 因此可以用来发送请求, 如script, img等标签
JSON实现流程
- 定义全局函数, 发送请求(客户端)
<!DOCTYPE html> <html lang="en"><head><meta charset="UTF-8" /><meta http-equiv="X-UA-Compatible" content="IE=edge" /><meta name="viewport" content="width=device-width, initial-scale=1.0" /><title>Document</title></head><body><script>window.test = (data) => {console.log(data);};</script><script src="http://localhost:3000/test?callback=test"></script></body> </html>
- 接收数据, 返回数据(后端)
const Koa = require("koa"); const app = new Koa(); const Router = require("koa-router"); const router = new Router({prefix: "/test", });app.use(router.routes()); router.get("/", async (ctx) => {ctx.body =ctx.query.callback +"(" +JSON.stringify({code: "200",data: {name: "chenjiang",},}) +")"; });app.listen(3000, (res) => {console.log("启动成功"); });
- 浏览器network