国产探花免费观看_亚洲丰满少妇自慰呻吟_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哈哈~

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

圖片精選

主站蜘蛛池模板: 汝州市| 通河县| 焉耆| 讷河市| 丰顺县| 湛江市| 淮阳县| 朝阳区| 安徽省| 新津县| 乌鲁木齐县| 通海县| 综艺| 堆龙德庆县| 连云港市| 梧州市| 碌曲县| 涡阳县| 唐河县| 河源市| 勐海县| 乌兰浩特市| 普兰店市| 杂多县| 和平区| 墨江| 樟树市| 沙田区| 吴堡县| 视频| 镇宁| 枣强县| 横峰县| 西华县| 班戈县| 十堰市| 洱源县| 玛多县| 桐城市| 平潭县| 尉氏县|