【发布时间】:2019-01-08 11:39:14
【问题描述】:
axios 库似乎无法正常工作,我不知道出了什么问题。
首先,解释一下。我是axios 的新手,我工作的公司已经使用nGinx 和proxy pass 设置了API 服务器。
假设 API 服务器位于域下:https://www.api.com,api 端点位于 https://www.api.com/api/ 下。
然后,我们将创建一个 SSR 应用程序,使用 axios 库向此服务器发出请求,但重点是使用 axios 的 proxy settings,在某种程度上,最后请求不会是这样的:https://www.api.com/api/endpoint,而是这样的:https://www.js-app.com/api/endpoint。
所以,目前我有以下课程:
class WebApiService {
constructor() {
this.deferred = Q.defer();
this.$http = axios.create();
}
async call(config) {
WebApiService._setDefaultApiCallHeader(config);
try {
const result = await this.$http(config);
this.deferred.resolve(result);
} catch( error ) {
this.deferred.reject(error);
}
return this.deferred.promise;
}
static _setDefaultApiCallHeader(config) {
config.headers = config.headers || {};
if (window.sessionStorage['Authorization'] !== 'undefined') {
config.headers['Authorization'] = `Bearer ${window.sessionStorage['Authorization']}`;
}
// HERE I SETUP THE PROXY SETTINGS
if ( /^\/api\//.test(config.url) ) {
config.proxy = config.proxy || {};
config.proxy.host = 'https://www.api.com';
}
}
}
所以现在,当我使用这样的代码从我的应用程序的另一个地方使用这个类时:
const options = {
method: 'POST',
url: '/api/v0/configs',
data: { domain: window.location.hostname }
};
const websiteConfig = await this.webApiService.call(options);
在我的浏览器控制台中,我收到 404 错误,这是因为 axios 仍然从我的本地主机而不是远程服务器请求 API 调用。
我得到的错误是这样的:
请求拦截器中的axios 设置也是这样的:
所以,你认为我做错了什么?你认为我试图实现一些不可能的事情吗?这种情况有什么解决办法吗?关于如何解决这个问题的任何想法?
【问题讨论】:
标签: javascript axios