前后端分離開(kāi)發(fā)中必要會(huì)遇到的問(wèn)題—跨域。在使用vue開(kāi)發(fā)的時(shí)候,開(kāi)始為了解決跨域問(wèn)題。采用的是CORS(Cross-origin resource sharing)。后臺(tái)在響應(yīng)頭中添加Access-Control-Allow-Origin。這樣就可以跨域調(diào)后臺(tái)接口了。
在前幾天無(wú)意中看到了config的index.js文件中有一個(gè)proxyTable屬性,通過(guò)配置可以解決開(kāi)發(fā)環(huán)境的跨域
開(kāi)發(fā)期間的API代理
當(dāng)將此樣板與現(xiàn)有后端集成時(shí),通常需要在使用dev服務(wù)器時(shí)訪問(wèn)后端API。為了實(shí)現(xiàn)這一點(diǎn),我們可以并行(或遠(yuǎn)程)運(yùn)行dev服務(wù)器和API后端,并讓dev服務(wù)器將所有API請(qǐng)求代理到實(shí)際的后端。
要配置代理規(guī)則,請(qǐng)?jiān)谄渲芯庉媎ev.proxyTable選項(xiàng)config/index.js。dev服務(wù)器正在使用http代理中間件進(jìn)行代理,因此您應(yīng)參考其文檔以獲取詳細(xì)的用法。但這是一個(gè)簡(jiǎn)單的例子:
// config/index.jsmodule.exports = { // ... dev: { proxyTable: { // proxy all requests starting with /api to jsonplaceholder '/api': { target: 'http://jsonplaceholder.typicode.com', changeOrigin: true, pathRewrite: { //需要rewrite重寫(xiě)的, 如果在服務(wù)器端做了處理則可以不要這段 '^/api': '' } } } }}上面的示例將代理請(qǐng)求/api/posts/1到http://jsonplaceholder.typicode.com/posts/1。
如果
pathRewrite: { ‘^/api': ‘a(chǎn)pi' }, 則將代理請(qǐng)求/api/posts/1到http://jsonplaceholder.typicode.com/api/posts/1。
網(wǎng)址匹配
除了靜態(tài)網(wǎng)址之外,您還可以使用glob模式來(lái)匹配URL,例如/api/**。有關(guān)詳細(xì)信息,請(qǐng)參閱上下文匹配。此外,您可以提供一個(gè)filter可以是自定義函數(shù)的選項(xiàng),以確定請(qǐng)求是否應(yīng)被代理:
proxyTable: { '*': { target: 'http://jsonplaceholder.typicode.com', filter: function (pathname, req) { return pathname.match('^/api') && req.method === 'GET' } }}以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持錯(cuò)新站長(zhǎng)站。
新聞熱點(diǎn)
疑難解答
圖片精選