Node–egg框架基础(4)----跨域
域名:以百度为例:https://baidu.com,其中的baidu.com就是它的域名。
跨域:通过一个域名访问到另一个域名的东西,它的详细解释如下:
1、广义的跨域:
(1)资源跳转:重定向、表单提交、a标签链接
(2)资源嵌入:link、script、img、iframe等标签以及样式表的url()方法等
(3)脚本请求:ajax请求、dom与js对象的跨域操作
2、狭义的跨域:相对于浏览器的跨域,因为浏览器的核心功能——同源策略而形成的跨域(同源策略即协议、域名、端口号都相同),浏览器拥有同源策略可以有效防止XSS、CSFR攻击。
(1)Cookie、Localstorage等无法读取
(2)dom和js对象无法获取
(3)ajax请求不能发送
在Node-egg中:
1、更改默认端口号:
在config文件夹中的config.default.js文件中添加:
exports.cluster = {
listen: {
port: 8000
}
};
2、设置可以跨域访问的三个步骤:
(1)npm i egg-cors --save
(2)在config目录下面plugin.js文件中加入:
exports.cors = {
enable: true,
package: 'egg-cors',
};
(3)在config.default.js文件中加入:
exports.cors = {
origin:'*',
allowMethods: 'GET,HEAD,PUT,POST,DELETE,PATCH',
};
3、如果要设置cookie跨域:
(1)npm i egg-cors --save
(2)plugin.js:
exports.cors = {
enable: true,
package: 'egg-cors',
domainWhiteList: ['http://127.0.0.1:端口号自己设置'],
};
(3)config.default.js:
exports.cors = {
origin:'http://127.0.0.1:与plugin中的端口号相同',
allowMethods: 'GET,HEAD,PUT,POST,DELETE,PATCH',
// 该属性允许cookie跨域
credentials: true
};
发现一个非常详细的跨域解决方案的博客:
https://segmentfault.com/a/1190000011145364