我現(xiàn)在的項(xiàng)目是使用 webpack + express 做前端開發(fā)環(huán)境
想通過(guò)代理解決跨域訪問(wèn)服務(wù)端接口
我嘗試的使用的方法是http-proxy-middleware代理轉(zhuǎn)發(fā),
獲取http://www.abc.com/(公網(wǎng)域名)下的數(shù)據(jù)接口,
本地請(qǐng)求:
$.ajax({
method: "GET",
url: 'api/baseData/getSections',
data: {},
success: function(data){
console.log(data);
}
})
請(qǐng)求后返回的是404,通過(guò)瀏覽器訪問(wèn)http://www.abc.com/baseData/g... 是沒有問(wèn)題的
本地項(xiàng)目啟動(dòng)的端口號(hào)是3000
dev-server.js 配置代碼:
const base = require('../config/webpack/base/base'),
files = require('../config/webpack/base/files'),
webpackConfig = require('../config/webpack/webpack.dev'),
proxy = require('http-proxy-middleware'),
express = require('express'),
webpack = require('webpack');
const app = express();
// Apply gzip compression
//const compress = require('compression')
//app.use(compress());
/** -----------------------------------
* Apply Webpack HMR Middleware
* */
if (process.env.NODE_ENV === 'development') {
const compiler = webpack(webpackConfig);
app.use(require('webpack-dev-middleware')(compiler, {
publicPath: files.cdnPath,
quiet : true,
stats : {colors: true}
}));
app.use(require('webpack-hot-middleware')(compiler));
app.use('/', express.static(files.buildPath));
app.use('/', express.static(files.staticPath));
var middleWareMap = [
proxy('/api', { target:'http://www.abc.com/' , changeOrigin: true }),
];
app.use(middleWareMap);
app.listen(base.devPort, () => {
console.log(`open localhost:${base.devPort}`);
});
}
else {
console.log(
`Server not being run of live development mode,
Please use the NODE_ENV=development mode to run`
);
}
module.exports = app;
上述問(wèn)題查過(guò)一些資料,還是不得要領(lǐng),不知道問(wèn)題的根源在哪里
還有一個(gè)問(wèn)題,服務(wù)端的測(cè)試環(huán)境訪問(wèn)地址是配置到一個(gè)內(nèi)網(wǎng)ip中,通過(guò)host指向一個(gè)域名(比如http://www.17xueba.com)
能否通過(guò)上述的配置來(lái)獲取服務(wù)端的測(cè)試環(huán)境數(shù)據(jù),如何進(jìn)行配置
問(wèn)題已解決
const base = require('../config/webpack/base/base'),
files = require('../config/webpack/base/files'),
webpackConfig = require('../config/webpack/webpack.dev'),
proxy = require('http-proxy-middleware'),
express = require('express'),
webpack = require('webpack');
// const { HOST = 'http://www.qtv001.com/', PORT = '80' } = process.env;
const app = express();
// Apply gzip compression
//const compress = require('compression')
//app.use(compress());
/** -----------------------------------
* Apply Webpack HMR Middleware
* */
if (process.env.NODE_ENV === 'development') {
const compiler = webpack(webpackConfig);
app.use(require('webpack-dev-middleware')(compiler, {
publicPath: files.cdnPath,
quiet : true,
stats : {colors: true}
}));
app.use(require('webpack-hot-middleware')(compiler));
app.use('/', express.static(files.buildPath));
app.use('/', express.static(files.staticPath));
app.use(['/baseData','/newCourse'], proxy({
target: "http://www.abc.com",
changeOrigin: true
}));
app.listen(base.devPort, () => {
console.log(`open localhost:${base.devPort}`);
});
}
else {
console.log(
`Server not being run of live development mode,
Please use the NODE_ENV=development mode to run`
);
}
module.exports = app;
修改部分為:
將以下代碼刪除
var middleWareMap = [
proxy('/api', { target:'http://www.abc.com/' , changeOrigin: true }),
];
app.use(middleWareMap);
替換為
app.use(['/baseData','/newCourse'], proxy({
target: "http://www.abc.com",
changeOrigin: true
}));
出錯(cuò)原因,還是沒有對(duì)文檔仔細(xì)閱讀造成的
因?yàn)檎?qǐng)求地址沒有/api后綴,因此請(qǐng)求了http://www.abc.com/api,然而服務(wù)器沒有/api這個(gè)接口,索引返回了404錯(cuò)誤
北大青鳥APTECH成立于1999年。依托北京大學(xué)優(yōu)質(zhì)雄厚的教育資源和背景,秉承“教育改變生活”的發(fā)展理念,致力于培養(yǎng)中國(guó)IT技能型緊缺人才,是大數(shù)據(jù)專業(yè)的國(guó)家
北大青鳥中博軟件學(xué)院創(chuàng)立于2003年,作為華東區(qū)著名互聯(lián)網(wǎng)學(xué)院和江蘇省首批服務(wù)外包人才培訓(xùn)基地,中博成功培育了近30000名軟件工程師走向高薪崗位,合作企業(yè)超4
中公教育集團(tuán)創(chuàng)建于1999年,經(jīng)過(guò)二十年潛心發(fā)展,已由一家北大畢業(yè)生自主創(chuàng)業(yè)的信息技術(shù)與教育服務(wù)機(jī)構(gòu),發(fā)展為教育服務(wù)業(yè)的綜合性企業(yè)集團(tuán),成為集合面授教學(xué)培訓(xùn)、網(wǎng)
達(dá)內(nèi)教育集團(tuán)成立于2002年,是一家由留學(xué)海歸創(chuàng)辦的高端職業(yè)教育培訓(xùn)機(jī)構(gòu),是中國(guó)一站式人才培養(yǎng)平臺(tái)、一站式人才輸送平臺(tái)。2014年4月3日在美國(guó)成功上市,融資1
曾工作于聯(lián)想擔(dān)任系統(tǒng)開發(fā)工程師,曾在博彥科技股份有限公司擔(dān)任項(xiàng)目經(jīng)理從事移動(dòng)互聯(lián)網(wǎng)管理及研發(fā)工作,曾創(chuàng)辦藍(lán)懿科技有限責(zé)任公司從事總經(jīng)理職務(wù)負(fù)責(zé)iOS教學(xué)及管理工作。
浪潮集團(tuán)項(xiàng)目經(jīng)理。精通Java與.NET 技術(shù), 熟練的跨平臺(tái)面向?qū)ο箝_發(fā)經(jīng)驗(yàn),技術(shù)功底深厚。 授課風(fēng)格 授課風(fēng)格清新自然、條理清晰、主次分明、重點(diǎn)難點(diǎn)突出、引人入勝。
精通HTML5和CSS3;Javascript及主流js庫(kù),具有快速界面開發(fā)的能力,對(duì)瀏覽器兼容性、前端性能優(yōu)化等有深入理解。精通網(wǎng)頁(yè)制作和網(wǎng)頁(yè)游戲開發(fā)。
具有10 年的Java 企業(yè)應(yīng)用開發(fā)經(jīng)驗(yàn)。曾經(jīng)歷任德國(guó)Software AG 技術(shù)顧問(wèn),美國(guó)Dachieve 系統(tǒng)架構(gòu)師,美國(guó)AngelEngineers Inc. 系統(tǒng)架構(gòu)師。