解決方法:
- 在創(chuàng)建窗口的時候加上這個
webSecurity: false, 但是官方不建議將 webSecurity 屬性改為 false 。
所以這個方法不能用
// Create the browser window.
win = new BrowserWindow({
width: 900,
height: 620,
webPreferences: {
nodeIntegration: true
// webSecurity: false
},
frame: false,
...basicConfig
});
- 使用 nodejs 原生的 http 模塊 - (推薦)
(1)引入http模塊,自己手動封裝, 太麻煩了,要求較高
const http = require('http');
import http from 'http';
export default function request(options, postData) {
return new Promise((resolve, reject) => {
const basicOptions = {
hostname: '127.0.0.1',
port: 5000,
headers: {
'Content-Type': 'application/json'
}
};
options.method = options.method ? options.method.toLocaleUpperCase() : 'GET';
const req = http.request({...basicOptions, ...options}, res => {
// console.log('res :', res);
console.log(`狀態(tài)碼: ${res.statusCode}`);
console.log(`響應(yīng)頭: ${JSON.stringify(res.headers)}`);
res.setEncoding('utf8');
let temp = '';
res.on('data', chunk => {
// console.log(`響應(yīng)主體: ${chunk}`);
temp += chunk;
});
res.on('end', () => {
// console.log('響應(yīng)中已無數(shù)據(jù)');
resolve({
data: JSON.parse(temp),
statusCode: res.statusCode,
headers: res.headers
});
});
});
req.on('error', e => {
console.error(`請求遇到問題: ${e.message}`);
reject(e.message);
});
if (options.method === 'POST') {
// 將數(shù)據(jù)寫入請求主體。
req.write(JSON.stringify(postData));
}
req.end();
});
}
(2) axios 使用原生的 nodejs 的 http 模塊 github issues -- 推薦
給axios添加以下代碼
axios.defaults.adapter = require('axios/lib/adapters/http');
import axios from 'axios';
axios.defaults.baseURL = process.env.VUE_APP_BASE_URL;
axios.defaults.adapter = require('axios/lib/adapters/http');
// 請求攔截 設(shè)置統(tǒng)一header
axios.interceptors.request.use(
config => {
return config;
},
error => {
console.log(error);
return Promise.reject(error);
}
);
// 響應(yīng)攔截 401 token過期處理
axios.interceptors.response.use(
response => {
console.log(response);
return response;
},
error => {
// 錯誤提醒
console.log(error);
return Promise.reject(error);
}
);
export default axios;
完,問題解決