浏览器可以自动修改URL?

浏览器

  今天,一个同事访问http://www.ibm.com.cn网站时,觉得很奇怪,明明键入的是http://www.ibm.com.cn,怎么IE自动把它变成了http://www.ibm.com/cn/,而且已访问结果也是正确的。他觉得很费解,IE难道有这么智能?

  只要了解HTTP协议,以上转换的原理很简单,其过程大致如下:

  1.为了从www.ibm.com.cn上取得网页,浏览器做了类似下面的事情。

telnet www.ibm.com.cn 80

GET / HTTP/1.1

Host: www.ibm.com.cn

Accept-Languge: zh_CN

这时WEB服务器上返回如下内容:

HTTP/1.1 301 Moved Permanently

Date: Thu, 16 Feb 2006 12:14:13 GMT

Server: IBM_HTTP_Server

Location: http://www.ibm.com/link/redirect.www.ibm.com/www.ibm.com.cn/

Content-Length: 268

Content-Type: text/html

<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">

<html>

<head><title>301 Moved Permanently</title></head><body>

h1>Moved Permanently</h1>

<p>The document has moved

<a href="http://www.ibm.com/link/redirect.www.ibm.com/www.ibm.com.cn/">here</a>.

</p>

</body>

</html>

  根据HTTP协议里的规定,3开头的错误码表示重定向,并告诉浏览器从指定的URL重新获取文件。

  2.于是,浏览器又做了类似下面的事情。

telnet www.ibm.com 80

GET  /link/redirect.www.ibm.com/www.ibm.com.cn/

Host: www.ibm.com.cn

Accept-Languge: zh_CN

这时WEB服务器上返回如下内容:

<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">

<html><head><title>302 Found</title></head><body>

<h1>Found</h1>

<p>The document has moved

<a href="http://www.ibm.com/cn/">here</a>.</p>

</body></html>

还是重定向。

  3.于是,浏览器又做了类似下面的事情。

telnet www.ibm.com 80

GET /cn/ HTTP/1.1
Host: www.ibm.com.cn

Accept-Languge: zh_CN

这回终于得到了网面真正的内容。

参考:RFC 2616中的错误码:

Status-Code    =
            "100"  ; Section 10.1.1: Continue
          | "101"  ; Section 10.1.2: Switching Protocols
          | "200"  ; Section 10.2.1: OK
          | "201"  ; Section 10.2.2: Created
          | "202"  ; Section 10.2.3: Accepted
          | "203"  ; Section 10.2.4: Non-Authoritative Information
          | "204"  ; Section 10.2.5: No Content
          | "205"  ; Section 10.2.6: Reset Content
          | "206"  ; Section 10.2.7: Partial Content
          | "300"  ; Section 10.3.1: Multiple Choices
          | "301"  ; Section 10.3.2: Moved Permanently
          | "302"  ; Section 10.3.3: Found
          | "303"  ; Section 10.3.4: See Other
          | "304"  ; Section 10.3.5: Not Modified
          | "305"  ; Section 10.3.6: Use Proxy
          | "307"  ; Section 10.3.8: Temporary Redirect
          | "400"  ; Section 10.4.1: Bad Request
          | "401"  ; Section 10.4.2: Unauthorized
          | "402"  ; Section 10.4.3: Payment Required
          | "403"  ; Section 10.4.4: Forbidden
          | "404"  ; Section 10.4.5: Not Found
          | "405"  ; Section 10.4.6: Method Not Allowed
          | "406"  ; Section 10.4.7: Not Acceptable
 
          | "407"  ; Section 10.4.8: Proxy Authentication Required
          | "408"  ; Section 10.4.9: Request Time-out
          | "409"  ; Section 10.4.10: Conflict
          | "410"  ; Section 10.4.11: Gone
          | "411"  ; Section 10.4.12: Length Required
          | "412"  ; Section 10.4.13: Precondition Failed
          | "413"  ; Section 10.4.14: Request Entity Too Large
          | "414"  ; Section 10.4.15: Request-URI Too Large
          | "415"  ; Section 10.4.16: Unsupported Media Type
          | "416"  ; Section 10.4.17: Requested range not satisfiable
          | "417"  ; Section 10.4.18: Expectation Failed
          | "500"  ; Section 10.5.1: Internal Server Error
          | "501"  ; Section 10.5.2: Not Implemented
          | "502"  ; Section 10.5.3: Bad Gateway
          | "503"  ; Section 10.5.4: Service Unavailable
          | "504"  ; Section 10.5.5: Gateway Time-out
          | "505"  ; Section 10.5.6: HTTP Version not supported
          | extension-code

时间: 2024-08-02 16:32:20

浏览器可以自动修改URL?的相关文章

我的IE网页调用cgi程序时,浏览器却自动跳出下载窗口。要怎么设置,或者修改程序让IE执行cgi程序?

问题描述 我的IE网页调用cgi程序时,浏览器却自动跳出下载窗口.而用google浏览器,就能正常执行cgi程序.请问要怎么设置,或者修改程序让IE执行cgi程序?求各种帮拖,大爱 解决方案 解决方案二:在IIS上运行CGI有十个简单的步骤:1)安装InternetServiceManager.2)从列表中选择WWWServive.3)选择Properties/ServiceProperties命令.4)单击Directories标签.5)单击Add按钮.6)指定自己的cgi-bin目录的完整路

当你在浏览器地址栏输入一个URL后回车,将会发生的事情?

这道题目没有所谓的完全的正确答案,这个题目可以让你在任意的一个点深入下去, 只要你对这个点是熟悉的.以下是一个大概流程: 浏览器向DNS服务器查找输入URL对应的IP地址. DNS服务器返回网站的IP地址. 浏览器根据IP地址与目标web服务器在80端口上建立TCP连接 浏览器获取请求页面的html代码. 浏览器在显示窗口内渲染HTML. 窗口关闭时,浏览器终止与服务器的连接. 这其中最有趣的是第1步和第2步(域名解析).我们输入的网址(域名)是IP地址的一个别名, 在一个DNS内,一个域名对应

BIRT报表怎样随浏览器语言自动转换显示不同的语言

问题描述 BIRT报表怎样随浏览器语言自动转换显示不同的语言 根据Birt的帮助文档进行本地化设置,在报表的同级目录下建立中文.英文的properties files(如Test_zh_CN.properties,Test_en_US.properties),同时在Properties-Resources中增加资源文件,并在报表的Properties-Localization中定义Text key "wi_testview",其中文值为"测试视图",英文值为&quo

servlet-javaweb发布后怎么实现浏览器打开自动加载数据库信息

问题描述 javaweb发布后怎么实现浏览器打开自动加载数据库信息 网站没发布时,我设置了初始加载的InitServlet,而且设置了0,每次从myeclipse重新加载项目可以实现初始化加载. 但是现在我把网站挂到服务器上去了,每次数据库修改后,我只能实现从浏览器上打开网站,InitServlet无法加载新的内容,因为我无法启动myeclipse加载InitServlet,请问怎么解决,谢谢了.

chrome浏览器插件自动安装

问题描述 chrome浏览器插件自动安装 我开发了一个chrome浏览器插件,但是我想当用户打开一个网址后,进入网站, 插件就被下载自动安装到用户的浏览器上,请问这个过程自动安装怎么实现?过程是什么 原理? 解决方案 检测IE8及以下的浏览器并安装chrome frame插件chrome浏览器插件编写chrome空间自动点赞插件.浏览器插件简单例子. 解决方案二: 首先要放到Chrome APP store上面去,然后就可以打开你的App的STORE URL,然后让用户点击安装 解决方案三: C

PHP实现抓取Google IP并自动修改hosts文件_php实例

无聊中居然又找到个php版本的抓取google hosts的文件,试了下还可以用,ping了下ip,延迟也不是很高,网页打开测试了下速度也很快,大家有兴趣的话可以试试. 自动更新hosts文件, 不覆盖已存在的记录,方便使用,不用每次都 复制->打开hosts文件->粘贴. php文件: <?php /** * 免翻墙上google * @author 自娱自乐自逍遥 <wapznw@gmail.com> * Date: 2015/2/6 * Time: 11:42 */ d

jquery实现根据浏览器窗口大小自动缩放图片的方法_jquery

本文实例讲述了jquery实现根据浏览器窗口大小自动缩放图片的方法.分享给大家供大家参考.具体如下: (function($){ $.fn.resizeimage = function(){ var imgLoad = function (url, callback) { var img = new Image(); img.src = url; if (img.complete) { callback(img.width, img.height); } else { img.onload =

一种基于浏览器的自动小票机打印实现方案(js版)_javascript技巧

1.使用场景 用户在浏览器做了某项操作后,自动打印小票. 2.测试方式 2.1 JavaScript实现 尝试了很多办法,最终都会出现一个弹出框,让用户选择打印机.不符合我们需求. 2.2 lodop 功能比较强大,但是收费的.暂不考虑. 2.3 PAZU 功能也很强大,免费许可.非常赞! 详情:http://www.4fang.net/article/tech/pazu_tprinter.html 实现过程: 2.3.1 打印详情页面 <!doctype html> <html>

IE浏览器安全级别无法修改怎么办?

IE浏览器安全级别无法修改怎么办? 修改ie安全级别的时候,经常会提示:此域的推荐安全级别是"安全级-高". 您选择的级别较低. 请选择"安全级-高"安全级别或更高级别." 我们在修改IE的安全设置低于其默认设置时,系统会提示"无法修改--"的错误,这是由于SP3对用户设置较低的安全级别有所限制.不过这样可能会让我们在访问某些站点的时候失败,我们可以用如下方法修改其默认安全级别: 点击开始--运行,输入regedit 命令打开注册表编辑