【发布时间】:2024-05-15 16:55:02
【问题描述】:
我一直在尝试使用 Office JavaScript API 创建一个简单的函数来登录我公司在我的本地计算机上托管的本地服务器并获取响应。我使用Vue JS 作为我的前端框架,axios 用于 HTTP/S 请求。
这是 axios 调用的代码:
import Vue from "vue";
import Vuex from "vuex";
const axios = require('axios').default;
axios.defaults.crossDomain = true;
Vue.use(Vuex);
/**
* Network interactions and state manager
*/
const Network = new Vuex.Store({
state: {
url: 'http://127.0.0.1', //localhost by default
user: '',
pass: ''
},
getters: {
},
mutations: {
setLoginCreds(state, payload) {
state.url = payload.url;
state.user = payload.user;
state.pass = payload.pass;
},
},
actions: {
async login(context, { url, user, pass }) {
let route = '/core/loginguest';
let path = url + route;
await axios({
url: path,
method: 'POST',
params: {
userid: user,
password: pass
}
}).then(response => {
console.log(response)
if (response.status == 200) {
context.commit('setLoginCreds', { url, user, pass })
}
}).catch(err => {
console.log('Exception hit!')
console.log(err)
})
},
}
});
export default Network;
在 Word 上运行时,我在登录时收到以下错误(使用 Microsoft Edge 开发工具查看):
SEC7120:[CORS] 源“https://localhost:3000”在“http”的跨域资源的 Access-Control-Allow-Origin 响应标头中未找到“https://localhost:3000” ://127.0.0.1/core/loginguest?userid=hari&password=hari1234'。
据我了解,CORS 问题源于服务器的响应标头中不存在 Access-Control-Allow-Origin: *,但在 Electron.js 上使用相同的调用时我没有遇到这种情况。
这只是另一个让我受制于服务器的 CORS 问题,还是我可以从客户端控制的东西?
【问题讨论】:
-
如果您的 URL 使用
http://localhost而不是http://127.0.0.1会发生什么情况?如果添加 axios 选项withCredentials: true会发生什么?你的服务器使用 cors npm 包吗? -
据我所知服务器不使用
cors npm包。根据 Office JS 策略,托管 Office 加载项的应用程序需要通过 HTTPS 确保安全,因此不能真正使用它。我试过withCredentials,但没有用。 -
您在哪里托管此加载项?换句话说,您的 Office 插件清单中的 URL 是什么?
-
清单中的 URL 是
https://localhost:3000 -
@HariMohan 以及您的本地服务器的网址是什么?
标签: node.js vue.js axios office-js