国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > JavaScript > 正文

說說如何利用 Node.js 代理解決跨域問題

2024-05-06 15:40:20
字體:
來源:轉載
供稿:網友

前后端分離,經常會出現跨域訪問被限制的問題。

跨域訪問限制是服務端出于安全考慮的限制行為。即只有同域或者指定域的請求,才能訪問。這樣還可以防止圖片被盜鏈。服務端(比如 Node.js)可以通過代理,來解決這一問題。

1 安裝 request 庫

npm install request --save-dev

2 配置

我們以知乎日報為例,配置兩個代理。一個代理內容,另一個代理圖片。

在項目根目錄,配置 proxy.js :

//代理const http = require('http');const request = require('request');const hostIp = '127.0.0.1';const apiPort = 8070;const imgPort = 8071;//創建 API 代理服務const apiServer = http.createServer((req, res) => {  console.log('[apiServer]req.url='+req.url);  const url = 'http://news-at.zhihu.com/story' + req.url;  console.log('[apiServer]url='+url);  const options = {    url: url  };  function callback(error, response, body) {    if (!error && response.statusCode === 200) {      //編碼類型      res.setHeader('Content-Type', 'text/plain;charset=UTF-8');      //允許跨域      res.setHeader('Access-Control-Allow-Origin', '*');      //返回代理內容      res.end(body);    }  }  request.get(options, callback);});//監聽 API 端口apiServer.listen(apiPort, hostIp, () => {  console.log('代理接口,運行于 http://' + hostIp + ':' + apiPort + '/');});//創建圖片代理服務const imgServer = http.createServer((req, res) => {  const url = 'https://pic2.zhimg.com/' +req.url.split('/img/')[1];  console.log('[imgServer]url=' + url);  const options = {    url: url,    encoding: null  };  function callback(error, response, body) {    if (!error && response.statusCode === 200) {      const contentType = response.headers['content-type'];      res.setHeader('Content-Type', contentType);      res.setHeader('Access-Control-Allow-Origin', '*');      res.end(body);    }  }  request.get(options, callback);});//監聽圖片端口imgServer.listen(imgPort, hostIp, () => {  console.log('代理圖片,運行于 http://' + hostIp + ':' + imgPort + '/')});

代理的關鍵點是在響應頭添加 Access-Control-Allow-Origin 為 *,表示允許所有域進行訪問。

代理前地址 代理后地址
https://pic2.zhimg.com/v2-bb0a0282fd989bddaa245af4de9dcc45.jpg http://127.0.0.1:8071/img/v2-bb0a0282fd989bddaa245af4de9dcc45.jpg
http://news-at.zhihu.com/story/9710345 http://127.0.0.1:8070/9710345

3. 運行

執行:

node proxy.js

 運行結果:

代理接口,運行于 http://127.0.0.1:8070/代理圖片,運行于http://127.0.0.1:8071/

打開瀏覽器,輸入代理后的地址,就可以正常訪問啦O(∩_∩)O哈哈~

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 丰顺县| 闽侯县| 南平市| 高雄县| 连州市| 城步| 洪湖市| 红安县| 莆田市| 双流县| 七台河市| 从江县| 镇宁| 凤阳县| 长沙市| 托克逊县| 滨州市| 内黄县| 南昌县| 许昌县| 武清区| 萍乡市| 凤翔县| 南投县| 象州县| 方正县| 吉隆县| 洞头县| 南溪县| 安吉县| 邵武市| 庆云县| 监利县| 彰化县| 札达县| 司法| 安宁市| 佳木斯市| 新余市| 阿坝县| 社旗县|