真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

nodejs中怎么搭建一個(gè)代理服務(wù)器

今天就跟大家聊聊有關(guān)nodejs中怎么搭建一個(gè)代理服務(wù)器,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結(jié)了以下內(nèi)容,希望大家根據(jù)這篇文章可以有所收獲。

你所需要的網(wǎng)站建設(shè)服務(wù),我們均能行業(yè)靠前的水平為你提供.標(biāo)準(zhǔn)是產(chǎn)品質(zhì)量的保證,主要從事網(wǎng)站制作、成都網(wǎng)站制作、企業(yè)網(wǎng)站建設(shè)、手機(jī)網(wǎng)站制作設(shè)計(jì)、網(wǎng)頁設(shè)計(jì)、品牌網(wǎng)站建設(shè)、網(wǎng)頁制作、做網(wǎng)站、建網(wǎng)站。成都創(chuàng)新互聯(lián)公司擁有實(shí)力堅(jiān)強(qiáng)的技術(shù)研發(fā)團(tuán)隊(duì)及素養(yǎng)的視覺設(shè)計(jì)專才。

前端開發(fā)者在工作中常常遇到跨域的問題,一般我們遇到跨域問題主要使用以下辦法來解決:

1、jsonp

2、cors

3、配置代理服務(wù)器。

jsonp不是很靈活,只能發(fā)送get請求,不能發(fā)送psot請求,而cors雖然可以支持多種請求格式,但是如果請求攜帶cookie的話,還需要服務(wù)端和客戶端分別配置一下,個(gè)人感覺也很麻煩。

相對于前兩種,使用代理服務(wù)器解決跨域問題就簡單了好多。

瀏覽器由于同源策略的原因,不同域名之間發(fā)送ajax請求,響應(yīng)的數(shù)據(jù)不會(huì)被瀏覽器加載。而服務(wù)器向服務(wù)器發(fā)送請求則沒有同源策略的限制。

下圖便是代理服務(wù)器的原理了:

nodejs中怎么搭建一個(gè)代理服務(wù)器

代理服務(wù)器只是起一個(gè)中轉(zhuǎn)作用,配置代理服務(wù)器的方法有很多種,比如利用apache、nginx、tomcat等等,今天給大家介紹的是用nodejs配置代理服務(wù)器,用nodejs配置代理服務(wù)器,我們需要借助兩個(gè)npm包,一個(gè)是web開發(fā)框架express,一個(gè)是express中間件http-proxy-middleware 。

首先第一步我們先用express搭建兩個(gè)服務(wù)器,一個(gè)靜態(tài)資源服務(wù)器端口號為3000,一個(gè)接口服務(wù)器端口號為5000,靜態(tài)資源服務(wù)器代碼如下:

var express = require('express');
var app = express();
app.use(express.static('./public'));
app.listen(3000);

并且在public文件夾下新建a.html,并且在頁面中使用jquery,使用jquery發(fā)送ajax向接口服務(wù)器發(fā)送測試請求。

a.html代碼如下:

nodejs中怎么搭建一個(gè)代理服務(wù)器

接著搭建接口服務(wù)器,接口服務(wù)器端口號為5000,代碼如下:

nodejs中怎么搭建一個(gè)代理服務(wù)器

觀察代碼,我們設(shè)計(jì)了三個(gè)接口,都是get請求,只是url不同。

此時(shí)啟動(dòng)靜態(tài)資源服務(wù)器和接口服務(wù)器,然后訪問靜態(tài)資源服務(wù)器下面的a.html,結(jié)果如圖:

nodejs中怎么搭建一個(gè)代理服務(wù)器

如圖所示,發(fā)生跨域了,此時(shí)在靜態(tài)資源服務(wù)器中安裝http-proxy-middleware 中間件,并將其集成到靜態(tài)資源服務(wù)器中。

代碼如下:

nodejs中怎么搭建一個(gè)代理服務(wù)器

此時(shí)重啟靜態(tài)資源服務(wù)器,并將啊,a.html頁面中發(fā)送ajax的地址稍微改動(dòng)一下,如圖:

nodejs中怎么搭建一個(gè)代理服務(wù)器

觀察代碼:我們代碼原來是直接請求5000端口服務(wù)器的數(shù)據(jù),現(xiàn)在將其改成相對路徑,相對于當(dāng)前網(wǎng)頁所在的服務(wù)器,當(dāng)前的網(wǎng)頁所在的靜態(tài)服務(wù)器端口為3000。

當(dāng)我們訪問:http://localhost:3000/a.html,結(jié)果如圖:

看ajax請求的地址是如何拼接的:

nodejs中怎么搭建一個(gè)代理服務(wù)器

得出結(jié)論:相對路徑會(huì)被自動(dòng)拼接。

再看請求的結(jié)果,成功了:

nodejs中怎么搭建一個(gè)代理服務(wù)器

成功跨域了,當(dāng)然這樣說不嚴(yán)謹(jǐn),瀏覽器并沒有參與跨域,而是頁面中的ajax請求的地址還是3000端口的服務(wù),只不過是3000端口的服務(wù)接收到請求,將其轉(zhuǎn)發(fā)給了5000端口的服務(wù),并將5000端口的服務(wù)結(jié)果原封不動(dòng)的返還給了瀏覽器。

nodejs中怎么搭建一個(gè)代理服務(wù)器

回顧上面的代碼,我們只是在靜態(tài)資源服務(wù)器中應(yīng)用了http-proxy-middleware中間件,這個(gè)中間件的使用非常簡單,分為如下幾步:

1、安裝并引入到項(xiàng)目中。

2、通過app.use掛載中間件,這里需要注意的是,在掛載這個(gè)中間件的時(shí)候,app.use需要設(shè)置一個(gè)前置路由,和項(xiàng)目本來的路由作區(qū)分。

調(diào)用這個(gè)中間件的時(shí)候需要設(shè)置幾個(gè)常用參數(shù):

1、target,指的是目標(biāo)網(wǎng)站,或者被代理的網(wǎng)站。

2、changeOrigin是否更改host。默認(rèn)為false,不重寫。

3、pathRewrite路徑重寫,這個(gè)特性看需求。

簡單配置一下:

nodejs中怎么搭建一個(gè)代理服務(wù)器

如果這樣配置,當(dāng)a.html中發(fā)送請求時(shí),這樣寫:

nodejs中怎么搭建一個(gè)代理服務(wù)器

這個(gè)請求會(huì)被靜態(tài)資源服務(wù)器轉(zhuǎn)化為:

http://localhost:5000/api/a

也就是說如果不設(shè)置pathRewrite的話,頁面中的請求地址會(huì)被原封不動(dòng)的追加到目標(biāo)服務(wù)器地址的后面。

而如果真正的接口地址是這樣的:

http://localhost:5000/b

代理服務(wù)器該如何配置呢?

nodejs中怎么搭建一個(gè)代理服務(wù)器

此時(shí)在頁面中發(fā)送求請:

nodejs中怎么搭建一個(gè)代理服務(wù)器

此時(shí)根據(jù)代理服務(wù)的重寫規(guī)則,最終請求的地址為:

http://localhost:5000/b

以上便是pathRewrite的作用。

接著看changeOrigin的作用,當(dāng)我們將changeOrigin設(shè)置為true時(shí),我們在接口服務(wù)器打印req.headers,看看結(jié)果如何:

nodejs中怎么搭建一個(gè)代理服務(wù)器

仔細(xì)觀察host是localhost:5000,而將changeOrigin改為false呢?再次打印req.headers:

nodejs中怎么搭建一個(gè)代理服務(wù)器

此時(shí)查看host是localhost:3000,

changeOrigin就是是否重寫請求頭中的host,代理服務(wù)器會(huì)在請求頭中加入相應(yīng)Host首部,然后目標(biāo)服務(wù)器就可以根據(jù)這個(gè)首部來區(qū)別要訪問的站點(diǎn)了。假如你在本地80端口起了apache服務(wù)器,服務(wù)器配了兩個(gè)虛擬站點(diǎn)a.com b.com,設(shè)置代理之后并且changeOrigin為true 。此時(shí)就可以正確方法訪問到虛擬主機(jī)下的文檔內(nèi)容。否則訪問a b站點(diǎn)等同于訪問localhost。當(dāng)然如果你的服務(wù)器沒有配置虛擬主機(jī),完全可以省略這個(gè)參數(shù),就像上面演示的代碼,完全可以省略這個(gè)參數(shù)。因?yàn)榻涌诜?wù)器并沒有設(shè)置虛擬主機(jī)。

看完上述內(nèi)容,你們對nodejs中怎么搭建一個(gè)代理服務(wù)器有進(jìn)一步的了解嗎?如果還想了解更多知識或者相關(guān)內(nèi)容,請關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝大家的支持。


網(wǎng)頁標(biāo)題:nodejs中怎么搭建一個(gè)代理服務(wù)器
當(dāng)前路徑:http://weahome.cn/article/iehejj.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部