请教用socket连接,post后,出现Object Moved?

时间:2021-10-23 12:11:55
请教用socket连接,post后,出现<h1>Object Moved</h1>?h1>Object Moved</h1>This object may be found <a HREF="edit.asp">here</a>.....如何取得edit.asp文件?

20 个解决方案

#1


CInternetSession mysession;
CInternetFile* file = NULL;
CString htmlLine;
CString htmlContent;

file = (CInternetFile*) mysession.OpenURL("http://*****/edit.asp");

while (file->ReadString(htmlLine) != NULL)

    htmlContent = htmlContent + htmlLine;
}

htmlContent保存了edit.asp文件的代码

#2


谢谢高手指点,不过我用的是socket写的啊,怎么用socket写呢?我查了一下,它用了cookie,怎样写进cookie呢?

#3


move了返回状态是302吧,你可以得到状态,然后可以在头中找到最新的网址。
读了以后,对头进行拆分,可以得到cookie,然后再将新cookie提交出去。

#4


是302,请问提交cookie的格式怎样写呢?

从服务器接受:
HTTP/1.1 302 Object moved
Server: Microsoft-IIS/5.0
Date: Tue, 09 Sep 2003 13:15:08 GMT
Location: edit.asp
Connection: Keep-Alive
Content-Length: 129
Content-Type: text/html
Set-Cookie: adminok=True; path=/asp
Set-Cookie: ASPSESSIONIDGGGQGHMK=BFAIAMNCNNMNIFFEOELCHNHK; path=/
Cache-control: private
.......

#5


你给http server send():"GET http://*****/edit.asp HTTP/1.1\r\n\r\n".然后recv()就可以得到edit.asp的内容,不过前边也有个头。你最好先"HEAD http://*****/edit.asp HTTP/1.1\r\n\r\n"得到头的内容,然后再GET,最后把头删了。(我正做通过代理下东西得玩意儿,就是这么干的。)

不过得告诉你,你得到的结果是说你要获得的edit.asp不在你提供的url下。也就是说你的url是错的。只有得到头是"HTTP/1.1 200 OK\r\n"开头的头才说明正确。

当然,你说的估计是直接给服务器更新内容,我感觉是你没更新成功,或其他原因。我用这个方法下载是一点问题也没有。

#6


推荐看看rfc 1945.

#7


302 Moved Temporarily

请求到的资源在一个不同的URL处临时保存。因为重定向有时会被更改,客户端
应继续用请求URI来发出以后的请求。

新的URL必须由回应中的位置域指定。除非是HEAD请求,否则回应的实体主体
(Entity-Body)必须包括对新URL超链接的简要描述。

如果用POST方法发出请求,而接收到302回应状态码。在这种情况下,除非用户
确认,否则用户代理不必自动重定向请求,因为这将导致改变已发出请求的环境。

注意:当在接收到302状态码后而自动重定向POST请求时,一些现存的用户代理
会错误地将其改为GET请求
//以上是china_pub/emook翻译的rfc1945 关于302的描述。

#8


写这么多啊,谢谢了,具体情况是这样的,首先登陆的是一个login.asp 页面,通过密码验证后,重定向到edit.asp,第一步post,我想好象是正确的,因为如果是错误的,是定向到err.asp,不然就不会重定向到edit.asp页面.....我现在的情况是第一步post后,怎样获得edit.asp的内容?

#9


我刚刚用CInternetSession做过类似的东西,类似的流程。

#10


能说说如何redirection的吗?

#11


怎样实现重定向和cookie?

#12


gz Cookie

#13


"gz Cookie"什么意思?能说祥细点吗

#14


我感觉post以后,页面MOVE了,但是得到了cookie可能是一种技术, MOVE到一个新页面,完全可以改成get带着cookie提交到网站上。IE就是这种做的,我sniffer过好些回。

#15


能告诉我你的“get带着cookie”的格式是怎么写的吗?

#16


你sinnfer一下IE,就能看到。你对头一点都不了解吗?
Set-Cookie: adminok=True; path=/asp
Set-Cookie: ASPSESSIONIDGGGQGHMK=BFAIAMNCNNMNIFFEOELCHNHK; path=/
就是说这个网站的Cookie是adminok=True;这个cookie的有效范围是/asp下的如有文件,包括子路径
Cookie是ASPSESSIONIDGGGQGHMK=BFAIAMNCNNMNIFFEOELCHNHK; 有效范围是/,就是整个网站。
你提交的时时候,只要在http头的底部加一个:Cookie:adminok=True;ASPSESSIONIDGGGQGHMK=BFAIAMNCNNMNIFFEOELCHNHK;就行了。
如果你还不如白,请看RFC,查http协议。

#17


等了这么多天终于遇到高手了,好,我试试,谢谢

#18


问题已解决,谢谢楼上各位高手!

#19


特别感谢 philis(明天会更好)提供帮助!!!

#20


不客气。

#1


CInternetSession mysession;
CInternetFile* file = NULL;
CString htmlLine;
CString htmlContent;

file = (CInternetFile*) mysession.OpenURL("http://*****/edit.asp");

while (file->ReadString(htmlLine) != NULL)

    htmlContent = htmlContent + htmlLine;
}

htmlContent保存了edit.asp文件的代码

#2


谢谢高手指点,不过我用的是socket写的啊,怎么用socket写呢?我查了一下,它用了cookie,怎样写进cookie呢?

#3


move了返回状态是302吧,你可以得到状态,然后可以在头中找到最新的网址。
读了以后,对头进行拆分,可以得到cookie,然后再将新cookie提交出去。

#4


是302,请问提交cookie的格式怎样写呢?

从服务器接受:
HTTP/1.1 302 Object moved
Server: Microsoft-IIS/5.0
Date: Tue, 09 Sep 2003 13:15:08 GMT
Location: edit.asp
Connection: Keep-Alive
Content-Length: 129
Content-Type: text/html
Set-Cookie: adminok=True; path=/asp
Set-Cookie: ASPSESSIONIDGGGQGHMK=BFAIAMNCNNMNIFFEOELCHNHK; path=/
Cache-control: private
.......

#5


你给http server send():"GET http://*****/edit.asp HTTP/1.1\r\n\r\n".然后recv()就可以得到edit.asp的内容,不过前边也有个头。你最好先"HEAD http://*****/edit.asp HTTP/1.1\r\n\r\n"得到头的内容,然后再GET,最后把头删了。(我正做通过代理下东西得玩意儿,就是这么干的。)

不过得告诉你,你得到的结果是说你要获得的edit.asp不在你提供的url下。也就是说你的url是错的。只有得到头是"HTTP/1.1 200 OK\r\n"开头的头才说明正确。

当然,你说的估计是直接给服务器更新内容,我感觉是你没更新成功,或其他原因。我用这个方法下载是一点问题也没有。

#6


推荐看看rfc 1945.

#7


302 Moved Temporarily

请求到的资源在一个不同的URL处临时保存。因为重定向有时会被更改,客户端
应继续用请求URI来发出以后的请求。

新的URL必须由回应中的位置域指定。除非是HEAD请求,否则回应的实体主体
(Entity-Body)必须包括对新URL超链接的简要描述。

如果用POST方法发出请求,而接收到302回应状态码。在这种情况下,除非用户
确认,否则用户代理不必自动重定向请求,因为这将导致改变已发出请求的环境。

注意:当在接收到302状态码后而自动重定向POST请求时,一些现存的用户代理
会错误地将其改为GET请求
//以上是china_pub/emook翻译的rfc1945 关于302的描述。

#8


写这么多啊,谢谢了,具体情况是这样的,首先登陆的是一个login.asp 页面,通过密码验证后,重定向到edit.asp,第一步post,我想好象是正确的,因为如果是错误的,是定向到err.asp,不然就不会重定向到edit.asp页面.....我现在的情况是第一步post后,怎样获得edit.asp的内容?

#9


我刚刚用CInternetSession做过类似的东西,类似的流程。

#10


能说说如何redirection的吗?

#11


怎样实现重定向和cookie?

#12


gz Cookie

#13


"gz Cookie"什么意思?能说祥细点吗

#14


我感觉post以后,页面MOVE了,但是得到了cookie可能是一种技术, MOVE到一个新页面,完全可以改成get带着cookie提交到网站上。IE就是这种做的,我sniffer过好些回。

#15


能告诉我你的“get带着cookie”的格式是怎么写的吗?

#16


你sinnfer一下IE,就能看到。你对头一点都不了解吗?
Set-Cookie: adminok=True; path=/asp
Set-Cookie: ASPSESSIONIDGGGQGHMK=BFAIAMNCNNMNIFFEOELCHNHK; path=/
就是说这个网站的Cookie是adminok=True;这个cookie的有效范围是/asp下的如有文件,包括子路径
Cookie是ASPSESSIONIDGGGQGHMK=BFAIAMNCNNMNIFFEOELCHNHK; 有效范围是/,就是整个网站。
你提交的时时候,只要在http头的底部加一个:Cookie:adminok=True;ASPSESSIONIDGGGQGHMK=BFAIAMNCNNMNIFFEOELCHNHK;就行了。
如果你还不如白,请看RFC,查http协议。

#17


等了这么多天终于遇到高手了,好,我试试,谢谢

#18


问题已解决,谢谢楼上各位高手!

#19


特别感谢 philis(明天会更好)提供帮助!!!

#20


不客气。

#21