我已经写了一小段,它发送一个GET请求来解析HTTP响应时,如果有一个200 OK响应(AUTH时成功)执行AUTH和检查。现在,我通过这个特定的GET请求看到的一件事是,无论auth是否成功,响应始终为200。如何使用Ruby
的DIFF是在HTTP响应。那就是当auth失败时,第一个响应是200 OK,就像auth成功时一样,在这之后还有第二步。该页面再次被重定向到登录页面。
我只是试图让一个快速的脚本,可以检查我的登录用户,并通过我的web应用程序,并告诉我这权威性地通过了,哪些没有。
我应该如何检查呢?示例代码是这样的:
def funcA(u, p)
print_A("#{ip} - '#{u}' : '#{p}' - Pass")
end
def try_login(u, p)
path = '/index.php?uuser=#{u}&ppass=#{p}'
r = send_request_raw({
'URI' => 'path',
'method' => 'GET'
})
if (r and r.code.to_i == 200)
check = true
end
if check == true
funcA(u, p)
else
out = "#{ip} - '#{u} - Fail"
print_B(out)
end
return check, r
end
end
更新: 我也尝试添加了匹配“成功/失败”关键字的HTTP响应未来新的检查。它也没有工作。但我现在注意到,回来的回应似乎是另一种形式。 Content-Type的回应是text/html; charset = utf-8。而且我没有做任何解析,所以它失败了。
成功响应是形式:
{"param1":1,"param2"="Auth Success","menu":0,"userdesc":"My User","user":"uuser","pass":"ppass","check":"success"}
失败的反应是形式:
{"param1":-1,"param2"="Auth Fail","check":"fail"}
所以现在我需要如何解析这个响应一些指点。
很多谢谢。
你说的是http basic auth?也许你应该展示一些代码。 – pguardiario
增加了我的代码片断.. – Sunshine
请注意,['和'/'或'*不是*一样''&& /''||在红宝石(http://devblog.avdi.org/2010/ 8月2日/使用和 - 和 - 或 - 在旁注/)。当布尔逻辑是意图时,只有后者应该被使用。 –