当前位置:网站首页>CROS and JSONP configuration
CROS and JSONP configuration
2022-08-05 08:10:00 【cjx177187】
跨域
1.egg-cors框架提供了 egg-cors 插件来实现cors跨域请求.
//1.下载
cnpm i --save egg-cors
//2.开启插件
// config/plugin.js文件
cors:{
enable: true,
package: 'egg-cors',
}
//3.配置插件
// config/config.default.js文件
config.cors = {
origin: '*',
allowMethods: 'GET,HEAD,PUT,POST,DELETE,PATCH'
}
//默认originOnly support a domain name or*表示全部,If you want to support specific multiple specified domain name can be set as follows:
config.cors = {
// origin: ['http://localhost'],
origin:function(ctx) { //设置允许来自指定域名请求
console.log(ctx);
const whiteList = ['http://www.baidu.com','http://www.hqyj.com'];
let url = ctx.request.header.origin;
if(whiteList.includes(url)){
return url;
}
return 'http://localhost' //Default allows local requests a cross-domain
},
allowMethods: 'GET,HEAD,PUT,POST,DELETE,PATCH'
};
//4.使用:
//router.js文件
router.get('/cors',controller.home.cors)
//home.js文件
async cors(){
this.ctx.body={ info:"This interface can be accessed through cross-domain"}
}
5. 注意:Need to carry proof of cross-domain cross-domain front-end requests,Otherwise the cache will failure
The front-end web request configuration:
原生ajax:
xhr.withCredentials = true;
axios:
axios.post(url,{},{ withCredentials:true}).then((res)=>{})
后端配置:
config.cors = {
origin: '具体的ip和端口 不能写* ',
credentials:true
}
2.实现jsonp接口
//If the parameters of the front end ofcb=fn参数(jsonp接口参数),将会返回JSONP格式的数据,否则返回JSON格式的数据.
//1.配置:
// config/config.default.js文件
config.jsonp = {
callback: 'cb', // 识别 query 中的 `cb` 参数
limit: 100, // 函数名最长为 100 个字符
};
//2.写接口
// app/router.js
module.exports = app => {
const jsonp = app.jsonp();
app.router.get('/api/posts', jsonp, app.controller.posts.list);
};
也可以直接在jsonpMethods direct configuration,功能一样:
//If the parameters of the front end ofcb=fn参数(jsonp接口参数),将会返回JSONP格式的数据,否则返回JSON格式的数据.
// app/router.js文件
module.exports = app => {
const jsonp = app.jsonp({
callback: 'cb',
limit: 100,
});
app.router.get('/api/posts', jsonp, app.controller.posts.list);
};
边栏推荐
- 链表专项之环形链表
- The magic weapon for small entrepreneurs!
- The color of life divine
- JS实现从照片中裁切自已的肖像
- Basic introduction of stack and queue and C language implementation of functions such as creation, destruction, entry and exit, counting the number of elements, viewing elements, etc., as well as stac
- php fails to write data to mysql
- JVM运行流程,运行时数据区,类加载,垃圾回收,JMM解析
- spark集群部署(第三弹)
- MongoDB 语法大全
- DataFrame insert row and column at specified position
猜你喜欢
Redis常用命令
唤醒手腕 - 微信小程序、QQ小程序、抖音小程序学习笔记(更新中)
宝塔实测-搭建中小型民宿酒店管理源码
网络安全研究发现,P2E项目遭遇黑客攻击只是时间问题
v-if/v-else determines whether to display according to the calculation
Data source object management Druid and c3p0
ps怎么把图片变清晰,自学ps软件photoshop2022,简单快速用ps让照片更清晰更有质感
微信 小程序 之PC端 不支持 wx.previewMedia 方法 故用自定义轮播图进行 模拟照片视频的播放
uniapp时间组件封装年-月-日-时-分-秒
MobileNetV2架构解析
随机推荐
基于 Docker 快速使用远程(云)数据库
nn.unfold和nn.fold
Random code generation
window.open 全屏展示
Adb 授权过程分析
P1160 队列安排
[NOIP2010 提高组] 机器翻译
【结构体内功修炼】结构体内存对齐(一)
随机码的生成
Thinking after writing a code with a very high CPU usage
routing----router
Qt编写自定义控件:文字聚光灯效果之一
Use of thread pool (combined with Future/Callable)
Antdesign a-select 下拉框超出长度换行显示
JS实现从照片中裁切自已的肖像
力扣刷题八月第一天
CROS和JSONP配置
MySQL 数据库 报错 The server quit without updating PID file (/var/lib/mysql/localhost.localdomain.pid)
SVG Star Wars Style Toggle Toggle Button
Redis实现分布式锁-原理-问题详解