假设当前 URL 是:http://www.cftea.com/111/foo.asp?p1=1&p2#anchor

要获取其各部分的内容,各种语言中方法如下:

ASP
  • 获取 协议。Request.ServerVariables("SERVER_PROTOCOL"),值不是 http:// 而是形如 HTTP/1.0。
  • 获取 www.cftea.com。Request.ServerVariables("SERVER_NAME")
  • 获取 80,端口号,URL 中省略了。Request.ServerVariables("SERVER_PORT")
  • 获取 /111/foo.asp。Request.ServerVariables("URL") 或 Request.ServerVariables("SCRIPT_NAME")
  • 获取 p1=1&p2。Request.ServerVariables("QUERY_STRING")
  • 获取 #anchor。没办法,因为它不发送到服务器端(改变该值也不会重新加载页面)。
  • 另外:APPL_PHYSICAL_PATH 获取当前应用程序根目录路径,以 \ 结尾。
  • 另外:PATH_TRANSLATED 获取当前文件路径。
ASP.NET
  • 获取 协议。Request.ServerVariables["SERVER_PROTOCOL"],值不是 http:// 而是形如 HTTP/1.0。
  • 获取 www.cftea.com。Request.ServerVariables["SERVER_NAME"]
  • 获取 80,端口号,URL 中省略了。Request.ServerVariables["SERVER_PORT"]
  • 获取 /111/foo.asp。Request.ServerVariables("URL") 或 Request.ServerVariables["SCRIPT_NAME"]
  • 获取 p1=1&p2。Request.ServerVariables["QUERY_STRING"]
  • 获取 #anchor。没办法,因为它不发送到服务器端(改变该值也不会重新加载页面)。
  • 另外:APPL_PHYSICAL_PATH 获取当前应用程序根目录路径,以 \ 结尾。
  • 另外:PATH_TRANSLATED 获取当前文件路径。
JavaScript
  • 获取 协议。location.protocol,值为 http:,无 //。
  • 获取 www.cftea.com。location.hostname。与 location.host 不同,当端口不是 80 时,location.host 还会包含端口,形如:127.0.0.1:8080。
  • 获取 80,端口号,URL 中省略了。location.port,JavaScript 是处理客户端的,所以若 URL 中没有出现 80,值就不会是 80,而是零长度字符串。
  • 获取 /111/foo.asp。location.pathname
  • 获取 ?p1=1&p2。location.search,注意返回值前面带问号。
  • 获取 #anchor。location.hash
  • 获取 整个 URL。location.href