nodejs通过代理(proxy)发送http请求(request)

简介:

有可能有这样的需求,需要node作为web服务器通过另外一台http/https代理服务器发http或者https请求,废话不多说直接上代码大家都懂的:


var http = require('http')
var opt = {
 host:'这里放代理服务器的ip或者域名',
 port:'这里放代理服务器的端口号',
 method:'POST',//这里是发送的方法
 path:' https://www.google.com',     //这里是访问的路径
 headers:{
  //这里放期望发送出去的请求头
 }
}
//以下是接受数据的代码
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();
AI 代码解读
这样我们就通过了指定代理服务器发出了https的请求,注意这里我们同代理服务器是http协议的,不是https,返回的结果当然肯定会根据你的代理服务器不同有所不同。


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 HREF="https://www.google.com.tw/">here</A>.
</BODY></HTML>
AI 代码解读

谷歌返回了一个302,告诉我们进行跳转,需要访问 https://www.google.com.tw/ 这个地址 博客原文: http://snoopyxdy.blog.163.com/blog/static/60117440201211214207539/
相关文章
http get post 代理 请求
      import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.
886 0
|
11月前
|
HTTP请求方式大汇总
HTTP请求方式大汇总
97 0
HTTP的请求方式
我们一起来学习学习HTTP的请求方式,一起来归纳总结一下!
112 0
C#的HTTP请求客户端实现。
using System; using System.Collections.Generic; using System.Linq; using System.
765 0
|
10月前
|
JAVA Socket 实现HTTP与HTTPS客户端发送POST与GET方式请求
JAVA Socket 实现HTTP与HTTPS客户端发送POST与GET方式请求
137 0
HTTP 请求方法:你需要知道的一切
在 Web 开发领域,HTTP 方法在定义客户端如何与 Web 服务器交互以及对资源执行不同操作方面起着至关重要的作用。HTTP(Hypertext Transfer Protocol,超文本传输协议)是现代网络应用的栋梁,它定义了客户端与服务器之间的通信方式。
常见的HTTP请求方法
【10月更文挑战第25天】这些HTTP请求方法共同构成了客户端与服务器之间交互的基础,使得客户端能够根据不同的需求对服务器资源进行各种操作。在实际应用中,开发者需要根据具体的业务场景和资源的性质选择合适的请求方法来实现客户端与服务器之间的有效通信。
HTTP 请求方法
【10月更文挑战第22天】HTTP 请求方法
166 2
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等