API攻防:Web API安全指南
上QQ阅读APP看书,第一时间看更新

1.1.1 URL

你可能已经知道统一资源定位符(URL)是用于定位互联网上唯一资源的地址。这个URL包含几个组成部分,在后面的章节中,当你构造API请求时,理解这些组成部分会很有帮助。所有的URL都包括使用的协议、主机名、端口、路径和任何查询参数,如下所示:

Protocol://hostname[:port number]/[path]/[?query][parameters]

协议是计算机通信所遵循的一套规则。URL中主要涉及的协议包括用于网页的HTTP、HTTPS和用于文件传输的FTP。

端口是用于指定通信通道的数字,仅在主机无法自动解析请求至正确端口时才会出现。通常情况下,HTTP通信发生在端口80上;HTTPS,即加密版的HTTP,使用端口443;而FTP则使用端口21。若要访问运行在非标准端口上的Web应用程序,可在URL中加入端口号,例如:https://www.example.com:8443(端口8080和8443分别是HTTP和HTTPS的常见替代端口)。

Web服务器上的文件目录路径用于指示URL中所指定的网页和文件位置。URL中所使用的路径与在计算机上定位文件的路径相似。

查询是URL的可选组件,具有执行搜索、过滤和翻译请求信息等功能。Web应用程序提供商亦可利用查询字符串来追踪特定信息,如引荐用户至网页的URL、会话ID或电子邮件。查询字符串以问号(?)开头,包含一组服务器编程处理的标识符。最后,查询参数为描述针对给定查询应执行操作的值。例如,跟随查询页面后的?lang=en可能表示向Web服务器指示应以英文提供所请求的页面。这些参数由Web服务器处理的另一组字符串组成。一个查询可包含多个由“&”分隔的参数。

为了使这些信息更具针对性,请参考URL(https://twitter.com/search?q=hacking&src=typed_query)。在此示例中,协议为https,主机名为twitter.com,路径为search,查询符号为?q(表示查询),查询参数为hacking,src=typed_query则是一个追踪参数。该URL是在Twitter Web应用程序的搜索栏中输入搜索词“hacking”并按下Enter键后自动生成的。浏览器被编程为以Twitter Web服务器可识别的方式构建URL,并收集一些追踪信息作为src参数。Web服务器将接收关于hacking内容的请求,并针对与hacking相关的信息做出响应。