我考虑过跟踪重定向,因为他们会在标题中有下一个URL,直到我得到HTTP200确定,然后我会得到200的源代码的FQDN。
但我不认为浏览器是这样做的,我的代理可以对浏览器请求进行硬重定向,但浏览器会显示重定向数据的正确URL,而不会收到任何HTTP301。
我想知道浏览器做什么来获取其数据源,然后在winsock中执行此操作。任何人吗?
答案 0 :(得分:2)
无论浏览器做什么,它都无法从winsock层检索信息:套接字仅在IP地址和端口中传输。我对winsock(我是UNIX人员)并不是很了解,但它似乎与UNIX套接字层足够相似,以确保任何传输级别信息都来自更高级别的抽象。如果您查看[OSI模型] {http://en.m.wikipedia.org/wiki/OSI_model},您会看到winsocks正在寻找5级,而您正在寻找的东西是7级.API通常保持在相应的水平。这个观点似乎得到了[winsock FAQ] {http://tangentsoft.net/wskfaq/intermediate.html#appproto}的支持。
答案 1 :(得分:0)
并非所有HTTP重定向都会导致URL更改。 301
重定向当然可以,但其他3xx
重定向则不然。如果浏览器收到301
以外的重定向,则可能会决定是继续显示原始网址还是显示新的重定向网址。
答案 2 :(得分:0)
有一些方法可以在没有301的情况下重定向。还有302.有元素
<meta http-equiv="refresh" content="0; url=http://foo.com/">
最后,还有JavaScript:
<html><head><script language="javascript">
window.location.href = "http://www.bar.com";
</script></head><body></body></html>
答案 3 :(得分:0)
我的问题的Winsock解决方案是在getpeername()
之后使用connect()
函数进行远程连接。那应该返回IP:端口信息,我至少可以从中获取主机名。