【问题标题】:URLs and HTTP protocolURL 和 HTTP 协议
【发布时间】:2024-10-04 17:25:02
【问题描述】:

我目前正在学习如何通过 URL 将消息传输到主机服务器。到目前为止,我学到的是 URL 是如何组成的:http://example.com:80/latest/example.jpg?d=400x400 为我提供了通过端口 80 从主机请求的维度中的图像“example.jpg”(可以省略,因为 http 始终使用端口 80)。对此的请求消息如下所示: GET latest/example.jpg?d=400x400 HTTP/1.1。响应消息如下所示:HTTP/1.1 200 OK

所以我很清楚如何从主机获取一些资源。但是其他 HTTP 方法(如 PUT、POST 或 DELETE)是怎么回事?我不明白 HTTP 方法在 URL 中的哪个位置供主机读取。如何告诉主机 PUT 而不是 GET?

提前致谢。

【问题讨论】:

    标签: http url web networking distributed-computing


    【解决方案1】:

    似乎对 url 和相应的请求有一个小误解。

    urlhttp://example.com:80/latest/example.jpg?d=400x400由5个部分组成:

    • 使用的协议(在您的情况下为 http)
    • 使用 fqdn - 完全限定域名 -(在您的情况下为 example.com)
    • fqdn 上的端口 - 在您的情况下为 80 - 在您的情况下这是不必要的,因为您的浏览器默认为 http 的 80
    • 您请求的资源,在您的情况下为 /latest/example.jpg
    • 您请求的 GET 参数,用 ? 表示,在您的情况下,参数 d 的值为 400x400

    请注意,请求消息仅看起来像您概述的那样,因为您的浏览器默认使用 HTTP 的 GET 方法。正如你所说的,有各种 HTTP 方法,例如 PUT、POST、PATCH、DELETE 等。

    HTTP-Method 是在 HTTP Header 中声明的,所以取决于调用哪个 HTTP-Method 的请求。

    对于“众所周知的”互联网冲浪,您输入的 url 将始终导致 GET 请求。对于其他 HTTP 方法,取决于应用程序(例如,您的网站或使用 HTTP 请求的普通软件)来启用使用。例如,html 允许使用 <form> 标签,您可以在其中指定 http 方法,例如你可以说使用 POST。

    总结一下:您的网址没有指定 HTTP 方法。

    浏览器默认使用 GET,但最终取决于您的应用程序(以及其背后的逻辑)使用哪种 HTTP 方法。

    【讨论】: