egg的跨域处理

639 阅读1分钟

egg默认开启了跨域安全插件 如果需要自己自定义token等可以选择 关闭

因为egg框架自动开启了安全威胁 CSRF 的防范,所以要么在 config.default.js 中配置关闭 csrf,要么老老实实配置 cookies



config.security = {

csrf: {

enable: false,

},

};

在不关闭安全插件时

1 首先把XHR请求的 xhr.withCredentials = true (是否允许跨域)

2 $ npm i egg-cors --save

3 // {app_root}/config/plugin.js

exports.cors = {

  enabletrue,

  package'egg-cors',

};

4 // {app_root}/config/config.default.js

config.cors = {

origin: "http://39.101.70.5", //此处为请求的域名不能设置为*

credentials: true, //发送cookie

allowMethods: 'GET,HEAD,PUT,POST,DELETE,PATCH'//允许的请求方法

};

5 function getCookie(name) { //获取cookie

var arr, reg = new RegExp("(^| )" + name + "=([^;]*)(;|$)");

if (arr = document.cookie.match(reg))

return unescape(arr[2]);

else

return null;

}

6 在封装的ajax等请求中设置 每次请求带上cookie 'x-csrf-token': getCookie("csrfToken"), 获取cookie

x-csrf-token key名为默认key名 也可在egg项目中 config/config.details.js中设置自己想要的key名

config.security = {

headerName: 'x-csrf-token', // 通过 header 传递 CSRF token 的默认字段为 x-csrf-token

};