CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
山寨机中的战斗机! 程序优化工程师到底对IT界有没有贡献
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  VC/MFC >  网络编程

为什么加了http代理后,HEAD请求都返回403,直接连接发送HEAD请求就会返回200呢?

楼主zxfvc(七品VC)2005-05-30 15:37:28 在 VC/MFC / 网络编程 提问

期待高手出现。 问题点数:50、回复次数:7Top

1 楼jcmyname()回复于 2005-05-30 15:50:10 得分 10

那说明代理服务器没有访问远程服务器的权限呀Top

2 楼zxfvc(七品VC)回复于 2005-05-30 16:07:13 得分 0

我试了一下:  
  HEAD   http://okbz.163888.net/1.mp3   http/1.1  
  Host:okbz.163888.net  
   
  我发送这个请求,返回403  
  但发送:  
  GET   http://okbz.163888.net/1.mp3   http/1.1  
  Host:okbz.163888.net  
  ...  
  可以返回200  
  这说明代理没问题的,只是得不到文件的大小。  
  不知道为什么,期待中...  
   
  Top

3 楼zxfvc(七品VC)回复于 2005-05-31 09:06:00 得分 0

upTop

4 楼kingzai(stevenzhu)回复于 2005-05-31 09:54:05 得分 20

//通过HTTP方式代理  
   
  if(   !ClientSock.Connect(   g_ProxyInfo.m_strProxyIP,g_ProxyInfo.m_nProxyPort)   )  
  {  
  m_sError   =   _T("不能连接到代理服务器!");  
  ClientSock.Close();  
  return   FALSE;  
  }  
  char   buff[600];  
  sprintf(   buff,   "%s%s:%d%s","CONNECT   ",GetServerHostName(),GetPort(),"   HTTP/1.0\r\nUser-Agent:   MyApp/0.1\r\n\r\n");  
  ClientSock.Send(buff,strlen(buff));   //发送请求  
  memset(buff,0,600);  
  ClientSock.Receive(buff,600);  
  if(strstr(buff,   "200   Connection   established")   ==   NULL)   //连接不成功  
  {  
  m_sError   =   _T("通过代理连接主站不成功!");  
  ClientSock.Close();  
  return   FALSE;  
  }  
  典型的反馈,仅供参考:  
   
  if(   strstr(buff,   "Error   403")   )  
  {  
          return   GoError(PROXYERROR_PROXYDISABLE);     //代理服务器拒绝请求  
  }  
   
  if(   strstr(buff,   "407   Proxy   authentication   required")   )     //需要身份验证  
  {  
      return   GoError(PROXYERROR_USERNAMEORPASSWORD);     //用户身份校检不成功  
  }  
  if(   strstr(buff,   "Connection   refuesed")   )  
  {  
      return   GoError(PROXYERROR_CONNECTHOSTSERVER);     //通过代理连接主站不成功  
  }  
  if(   strstr(buff,   "Access   Denied")   )  
  {  
      return   GoError(PROXYERROR_USERNAMEORPASSWORD);     //用户身份校检不成功  
  }  
  if(strstr(buff,   "Connection   refused   by   Remote   Host")   )  
  {  
      return   GoError(PROXYERROR_CONNECTHOSTSERVER);     //通过代理连接主站不成功  
  }      
  Top

5 楼veryfunny()回复于 2005-05-31 12:07:43 得分 20

这个与代理没有什么关系。  
  由于HEAD方法经常被机器人所使用,所以有的WEB服务器配置成不支持HEAD方法的,所以都会能403出现。  
  还是用GET吧,安全一些。Top

6 楼zxfvc(七品VC)回复于 2005-06-01 09:13:03 得分 0

楼上的朋友说的有道理,IIS在哪儿可以设置不支持HEAD命令呀?  
   
  我昨天在新闻组上也问了,他说可能是代理设置时禁止了HEAD命令,一般的代理程序都有那个设置,我用的是SuperProxy,但没发现那个设置,有人用过吗?在哪儿可以设置呀?  
   
  Alexander   Nickolov(Microsoft   MVP   [VC],   MCSD):  
   
  Your   proxy   most   likely   doesn't   support   the   HEAD   request,  
  or   it   has   an   explicit   policy   set   somewhere   to   forbid   it.  
   
   
  Top

7 楼zxfvc(七品VC)回复于 2005-06-02 09:09:16 得分 0

upTop

相关问题

  • http请求解析
  • 微软向sinox臣服请求代理汉澳操作系统??
  • 关于Http请求头解码
  • 在applet中怎么发http请求?
  • 请求http页面没有反应?
  • 请求因 HTTP 状态 404 失败:Not Found。
  • http请求参数长度问题
  • 向servlet发送http请求的方式
  • http重定向请求失败??????????
  • 通过HTTP请求登陆网站

关键词

  • .net
  • mp3
  • 连接
  • 服务器
  • okbz.163888
  • buff
  • clientsock
  • goerror
  • proxyerror
  • 代理

得分解答快速导航

  • 帖主:zxfvc
  • jcmyname
  • kingzai
  • veryfunny

相关链接

  • Visual C++类图书
  • Visual C++类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo