跨网站POST验证码的时候总是报验证码错误!!

sorin 2008-12-18 02:48:48
跨网站POST/GET数据的时候总是验证码错误

公司有一个老站点是通过一个员工号和随机验证码来查询信息 原理是通过form表单 POST数据得到人员信息 (但源码已经无法得到了)
代码如下:
<form action="http://www.1111.com/abc.aspx" method="post" target="_parent">
员工号
<input name="idno" type="text" />
<img alt="验证码" src="http://www.1111.com/verifycode" />
<input type="text" name="verifycode"/>
<input type="submit" name="submit" value="查询" />
</form>

现在我要做一个新站点 需要引用老页面的查询,随机的验证码还是从老地址取
新的查询页面search.aspx 这个页面就是后台POST数据(也就是向老页面http://www.1111.com/abc.aspx 发送POST数据然后得到结果)
代码如下:
<form action="http://www.2222.com/search.aspx" method="post" target="_parent">
员工号
<input name="idno" type="text" />
<img alt="验证码" src="http://www.1111.com/verifycode" />
<input type="text" name="verifycode"/>
<input type="submit" name="submit" value="查询" />
</form>

search.aspx的代码如下 应该没什么问题 :
Encoding encoding = Encoding.GetEncoding("UTF-8");
byte[] Data = encoding.GetBytes("idno=123456&verifycode=8888"); //这就是人员号和验证码信息
HttpWebRequest myRequest = (HttpWebRequest)WebRequest.Create("http://www.1111.com/abc.aspx"); //准备把数据发送到原来的页面
myRequest.Method = "POST";
myRequest.ContentType = "application/x-www-form-urlencoded";
myRequest.ContentLength = Data.Length;

Stream Out = myRequest.GetRequestStream();
Out.Write(Data, 0, Data.Length);
Out.Close();
HttpWebResponse MyResponse = (HttpWebResponse)myRequest.GetResponse();
Stream InStream = MyResponse.GetResponseStream();
StreamReader read = new StreamReader(InStream, encoding);
return read.ReadToEnd();

但是在提交完毕时总是说验证码错误,页面也并没有新打开窗口,始终是在原窗口显示的
因为不涉及用户名密码,所以并没有涉及到保存COOKIE问题,我想它只用到了SESSION ,因为每次查询都需要输入验证码


这个问题已经困扰我很长时间了,高手指教一下 多谢了
...全文
586 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
sorin 2008-12-18
  • 打赏
  • 举报
回复
cpp2017 2008年12月18日 16点11分41秒 说:
CookieContainer 第一次是你要new 的对象,放进去,保存在session中,第二次查询的时候从session中取,然后放进去查询

感谢高手提示 感激不尽
sorin 2008-12-18
  • 打赏
  • 举报
回复
我用工具抓了一下SESSION ID 确实是不一样的

谢谢 我按你的方法再试一下
cpp2017 2008-12-18
  • 打赏
  • 举报
回复
因为你的验证码是客户端去查询的,而提交用的是后台是一个新的session,这两者的验证码对不上也就不奇怪了.

解决办法,先用HttpWebRequest用get的方式去取一个图片,同时保存cookcontainer.
然后将这个图片显示在界面上给用户看并输入验证码,然后用户提交时用上次的那个cookcontainer加上用户输入的验证码去查询.
然后就OK
sorin 2008-12-18
  • 打赏
  • 举报
回复
顶啊

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧