web01:服務端程序,端口80javascript
安裝koa-jsonp模塊:npm install koa-jsonp
html
服務端程序中導入和配置jkoa-jsonp模塊前端
const koa = require('koa') const router = require('koa-router')() // 導入koa-jsonp模塊 const jsonp = require('koa-jsonp') const app = new koa() // 處理jsonp請求 router.get('/list', async (ctx) => { // 接收回調函數名稱 let callbackName = ctx.query.callback || 'callback' // 返回jsonp ctx.body = callbackName + `(${JSON.stringify(['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'])})` }) app.use(router.routes()) app.use(router.allowedMethods()); //配置 jsonp 的中間件 app.use(jsonp()); app.listen(80)
web02:前端程序,端口8080java
<button id="btn1">跨域-jsonp:發送異步請求</button> <script src="./jquery.js"></script> <script> // jsonp請求 $('#btn1').click(function(){ $.ajax({ async:false, url:'http://localhost/list', xhrFields: {widthCredentials:true}, dataType: 'JSONP', success:function(data){ console.log(data) } }) }) </script>
web01:服務端程序,端口80jquery
安裝koa2-cors模塊:npm insall koa2-cors
web
配置和導入koa2-cors模塊ajax
const koa = require('koa') const router = require('koa-router')() // 導入koa2-cors模塊 const cors = require('koa2-cors') const app = new koa() //配置 cors 的中間件 app.use( cors({ origin: function(ctx) { //設置容許來自指定域名請求 if (ctx.url === '/test') { return '*'; // 容許來自全部域名請求 } return 'http://localhost:8080'; //只容許http://localhost:8080這個域名的請求 }, maxAge: 5, //指定本次預檢請求的有效期,單位爲秒。 credentials: true, //是否容許發送Cookie allowMethods: ['GET', 'POST', 'PUT', 'DELETE', 'OPTIONS'], //設置所容許的HTTP請求方法 allowHeaders: ['Content-Type', 'Authorization', 'Accept'], //設置服務器支持的全部頭信息字段 exposeHeaders: ['WWW-Authenticate', 'Server-Authorization'] //設置獲取其餘自定義字段 }) ) router.get('/list', async (ctx) => { ctx.body = ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat']; }) router.get('/test', async (ctx) => { ctx.body = 'test-ok'; }) app.use(router.routes()) app.use(router.allowedMethods()); app.listen(80)
web02:前端程序,端口8080npm
<button id="btn1">跨域-cors:發送異步請求1</button> <button id="btn2">跨域-cors:發送異步請求2</button> <script src="./jquery.js"></script> <script> // ajax請求 $('#btn1').click(function(){ $.ajax({ url:'http://localhost/list', success:function(data){ console.log(data) } }) }) // ajax請求 $('#btn2').click(function(){ $.ajax({ url:'http://localhost/test', success:function(data){ console.log(data) } }) }) </script>