詳解nodejs通過代理(proxy)發(fā)送http請(qǐng)求(request)
有可能有這樣的需求,需要node作為web服務(wù)器通過另外一臺(tái)http/https代理服務(wù)器發(fā)http或者h(yuǎn)ttps請(qǐng)求,廢話不多說直接上代碼大家都懂的:
var http = require('http') var opt = { host:'這里放代理服務(wù)器的ip或者域名', port:'這里放代理服務(wù)器的端口號(hào)', method:'POST',//這里是發(fā)送的方法 path:' https://www.google.com', //這里是訪問的路徑 headers:{ //這里放期望發(fā)送出去的請(qǐng)求頭 } } //以下是接受數(shù)據(jù)的代碼 var body = ''; var req = http.request(opt, function(res) { console.log("Got response: " + res.statusCode); res.on('data',function(d){ body += d; }).on('end', function(){ console.log(res.headers) console.log(body) }); }).on('error', function(e) { console.log("Got error: " + e.message); }) req.end();
這樣我們就通過了指定代理服務(wù)器發(fā)出了https的請(qǐng)求,注意這里我們同代理服務(wù)器是http協(xié)議的,不是https,返回的結(jié)果當(dāng)然肯定會(huì)根據(jù)你的代理服務(wù)器不同有所不同。
Got response: 302 { location: 'https://www.google.com.tw/', 'cache-control': 'private', 'content-type': 'text/html; charset=UTF-8', 'set-cookie': [ 'PREF=ID=b3cfcb24798a7a07:FF=0:TM=1356078097:LM=1356078097:S=v_3qEd0_gCW6-xum; expires=Sun, 21-Dec-2014 08:21:37 GMT; path=/; domain=.google.com', 'NID=67=qoJf_z3W7KlibpNZ6xld__r0rYGyYu7l_XiDQmZ3anjBFadDzhijME3QcX651yucne_irK_2JMS8HF5FuxNl85mE0nDrtn9Iq0z2gW69n00OrB970hpHTbYe0mAogZit; expires=Sat, 22-Jun-2013 08:21:37 GMT; path=/; domain=.google.com; HttpOnly' ], p3p: 'CP="This is not a P3P policy! See http://www.google.com/support/accounts/bin/answer.py?hl=en&answer=151657 for more info."', date: 'Fri, 21 Dec 2012 08:21:37 GMT', server: 'gws', 'content-length': '223', 'x-xss-protection': '1; mode=block', 'x-frame-options': 'SAMEORIGIN', via: '1.0 ***.****.com:80 (squid/2.6.STABLE21)', 'proxy-connection': 'keep-alive' } <HTML><HEAD><meta http-equiv="content-type" content="text/html;charset=utf-8"> <TITLE>302 Moved</TITLE></HEAD><BODY> <H1>302 Moved</H1> The document has moved <A rel="external nofollow" >here</A>. </BODY></HTML>
谷歌返回了一個(gè)302,告訴我們進(jìn)行跳轉(zhuǎn),需要訪問 https://www.google.com.tw/ 這個(gè)地址
以上就是本文的全部內(nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- js對(duì)象屬性的攔截與Proxy代理與Reflect映射的用法和區(qū)別講解
- JavaScript?Object.defineProperty與proxy代理模式的使用詳細(xì)分析
- JS?中Proxy代理和?Reflect反射方法示例詳解
- JS代理對(duì)象Proxy初體驗(yàn)簡單的數(shù)據(jù)驅(qū)動(dòng)視圖
- nuxt.js服務(wù)端渲染中axios和proxy代理的配置操作
- node.js使用 http-proxy 創(chuàng)建代理服務(wù)器操作示例
- 使用nodejs中httpProxy代理時(shí)候出現(xiàn)404異常的解決方法
- JavaScript中的Proxy代理的用法和功能詳解
相關(guān)文章
Node.js實(shí)現(xiàn)爬取網(wǎng)站圖片的示例代碼
本文將利用Node.js開發(fā)一個(gè)小示例—爬取某圖片網(wǎng)站的圖片,文中涉及的知識(shí)點(diǎn)有https模塊、cheerio模塊、fs模塊和閉包,感興趣的可以了解一下2022-04-04使用node搭建自動(dòng)發(fā)圖文微博機(jī)器人的方法
這篇文章主要介紹了使用node搭建自動(dòng)發(fā)圖文微博機(jī)器人的方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-03-03Egret引擎開發(fā)指南之發(fā)布項(xiàng)目
當(dāng)我們制作完成一個(gè)項(xiàng)目后,我們需要把項(xiàng)目發(fā)布為正式版本,并放到網(wǎng)上提供給玩家。那么在egret中簡單的使用build命令并非打包最終的正式版文件。你還需要進(jìn)行最終的發(fā)布操作。2014-09-09學(xué)習(xí) NodeJS 第八天:Socket 通訊實(shí)例
本篇文章主要介紹了學(xué)習(xí) NodeJS 第八天:Socket 通訊實(shí)例,非常具有實(shí)用價(jià)值,需要的朋友可以參考下。2016-12-12nodejs實(shí)現(xiàn)黑名單中間件設(shè)計(jì)
最近寫的項(xiàng)目中涉及到防止灌水的功能,于是設(shè)計(jì)了黑名單中間件,跟大家分享一下,同時(shí)也希望大家有好的建議能夠拍磚.2014-06-06詳解利用nodejs對(duì)本地json文件進(jìn)行增刪改查
這篇文章主要介紹了詳解利用nodejs對(duì)本地json文件進(jìn)行增刪改查,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-09-09手把手教你通過nodejs快速搭建一個(gè)服務(wù)器
這篇文章主要給大家介紹了關(guān)于如何通過nodejs快速搭建一個(gè)服務(wù)器的相關(guān)資料,在node.js中創(chuàng)建一個(gè)服務(wù)器非常簡單,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下2023-10-10在Node.js中使用Express實(shí)現(xiàn)視頻評(píng)論的列表展示和刪除功能
在現(xiàn)代Web應(yīng)用中,視頻內(nèi)容和互動(dòng)功能(如評(píng)論)的結(jié)合極大地增加了用戶的參與度,本文將通過一個(gè)具體的例子,展示如何在Node.js環(huán)境中使用Express框架來實(shí)現(xiàn)視頻評(píng)論的列表展示和刪除功能,需要的朋友可以參考下2024-04-04