0
我正在處理一個反應應用程序。我使用模塊http-proxy-middleware配置了代理。爲什麼當我打電話給代理服務器api時,網址url是追加的
在標誌頁面,網站url看起來像// localhost:9000/flags/all。
當用戶點擊旗幟網頁上的按鈕,我需要調用閃耀(REST服務)API和應該加載結果。當我打電話給sparkle api時,內部網站的url也被追加,並且api調用形成爲http://SGD01D:10700/all/sparkle/flags而不是// SGD01D:10700/sparkle/flags。爲什麼「全部」會添加到api調用中?如何解決這個問題
//server
app.use('/sparkle', proxy(proxies.sparkle_config()));
//Proxy config
class proxies {
static sparkle_config() {
return {
target: 'http://SGD01D:10700', // target host
changeOrigin: true // needed for virtual hosted sites
};
}
}
export default proxies;
//React action
//redux-thunk
export function loadFlags() {
return function(dispatch) {
dispatch(beginAjaxCall());
const promise = axios({url: 'sparkle/v1/api/flag', timeout: 20000, method: 'get', responseType: 'json'});
promise.then(function(flags) {
dispatch(loadFlagsSuccess(flags));
}).catch(function(error) {
throw(error);
});
};
}
在flags頁面'//本地主機:9000 /標記/ all',Ajax請求到'爍/ V1/API/flag'將導致請求到'// localhost:9000/flags/sparkle/v1/api/flag',它不會碰到'app.use('/ sparkle',...)'。你能打開瀏覽器DevTool來確認嗎? – shaochuancs
另外,對'sparkle/v1/api/flag'的請求將被代理爲'.../v1/api/flag'。這不太可能被代理到'sparkle/flags'。你的代碼中是否有缺失? – shaochuancs
感謝您的回覆。我的觀察如下,請檢查一次。網址= http:// localhost:9000/flag/all, API調用='sparkle/v1/api/flag', 開發工具url = http:// localhost:9000/flag/sparkle/v1/API /標記(404結果), 應該是= HTTP://本地主機:9000 /閃光/ V1/API /標誌, 一個多觀察: 如果我的網站網址,如http:// localhost:9000/flag/all/testing, 然後開發工具url = http:// localhost:9000/flag/sparkle/all/v1/api/flag(結果爲404) – Abhi