当前位置:网站首页>CROS和JSONP配置
CROS和JSONP配置
2022-08-05 08:06: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'
}
//默认origin只支持一个域名或者*表示全部,如果想支持具体的多个指定域名可以如下设置:
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' //默认允许本地请求可跨域
},
allowMethods: 'GET,HEAD,PUT,POST,DELETE,PATCH'
};
//4.使用:
//router.js文件
router.get('/cors',controller.home.cors)
//home.js文件
async cors(){
this.ctx.body={ info:"这个接口可以通过跨域访问"}
}
5. 注意:跨域前端请求时需要携带跨域凭证,不然缓存会失效
前端网络请求时配置:
原生ajax:
xhr.withCredentials = true;
axios:
axios.post(url,{},{ withCredentials:true}).then((res)=>{})
后端配置:
config.cors = {
origin: '具体的ip和端口 不能写* ',
credentials:true
}
2.实现jsonp接口
//如果前端的参数中有cb=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);
};
也可以直接在jsonp方法中直接配置,功能一样:
//如果前端的参数中有cb=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);
};
边栏推荐
猜你喜欢

Vulnhub target drone: HA_ NARAK

网络安全研究发现,P2E项目遭遇黑客攻击只是时间问题

七夕?编程?

TRACE32——加载符号表信息用于调试

MySQL 数据库 报错 The server quit without updating PID file (/var/lib/mysql/localhost.localdomain.pid)

微信 小程序 之PC端 不支持 wx.previewMedia 方法 故用自定义轮播图进行 模拟照片视频的播放

【 LeetCode 】 235. A binary search tree in recent common ancestor

双向循环带头链表

VXE-Table融合多语言

DeFi 前景展望:概览主流 DeFi 协议二季度进展
随机推荐
browserslist 选项的目的是什么?
Chapter 12 贝叶斯网络
存储过程编写经验和优化措施
Use of thread pool (combined with Future/Callable)
Algorithm Supplements Fifteen Complementary Linked List Related Interview Questions
iptables实现网络限制下ntp自定义端口同步时间
字符串提取 中文、英文、数字
D2--FPGA SPI interface communication2022-08-03
Redis数据库学习
JS实现从照片中裁切自已的肖像
MobileNetV2架构解析
Illegal key size 报错问题
星座理想情人
标准C语言15
Invalid operator for data type.The operator is add and the type is text.
Adb authorization process analysis
unity urp 渲染管线顶点偏移的实现
版本号命名规则
向美国人学习“如何快乐”
达梦数据库大表添加字段