-
Notifications
You must be signed in to change notification settings - Fork 0
/
http.js
48 lines (42 loc) · 1.26 KB
/
http.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
const CryptoJS = require("crypto-js");
const axios = require('axios');
const config = require('./env/config')
// SCF环境的切换
if (config.env === 'release') {
axios.defaults.baseURL = config.baseUrl + '/release'; //生产环境
} else if (config.env === 'prepub') {
axios.defaults.baseURL = config.baseUrl + '/prepub'; //预发布环境
} else {
axios.defaults.baseURL = config.baseUrl + '/test'; //测试环境
}
function getHeader() {
const dateTime = new Date().toGMTString();
const auth = 'hmac id="' + config.SecretId +'", algorithm="hmac-sha1", headers="x-date source", signature="';
const signStr = "x-date: " + dateTime + "\n" + "source: " + config.source;
let sign = CryptoJS.HmacSHA1(signStr, config.SecretKey);
sign = CryptoJS.enc.Base64.stringify(sign);
sign = auth + sign + '"';
return {
"Source": config.source,
"X-Date": dateTime,
"Authorization": sign
}
}
const instance = axios.create({
timeout: 5000,
headers: getHeader(),
withCredentials: true
})
instance.interceptors.response.use(
response => {
if (response.status === 200) {
return Promise.resolve(response.data);
} else {
return Promise.reject(response);
}
},
error => {
return Promise.reject(error);
}
)
module.exports = instance;