在这种情况下,"对服务器的两个请求"的实际含义是什么?

PHP*_*Fan 2 html url hyperlink httprequest

在w3schools.com 上学习关于HTML链接章节的 HTML教程时,我看到了以下句子:

如果没有子文件夹地址的正斜杠,您可能会向服务器生成两个请求.许多服务器会自动向地址添加正斜杠,然后创建新请求.

如果在锚标记的href属性中提到的URL中缺少尾部斜杠,我没有理解如何传递两个请求?

Pra*_*man 7

考虑你有这样的URL:

http://example.com/myfolder/
Run Code Online (Sandbox Code Playgroud)

因为在许多服务器中,directory可以在没有尾部斜杠的情况下访问它,但是有一个很好,对吗?因此,服务器通常会重定向客户端以将斜杠放在最后.

为什么要两个?

请参阅以下客户端和服务器之间的对话.

  1. 客户请求#1:我在请求您http://example.com/myfolder.
  2. 服务器响应#1:我希望你去http://example.com/myfolder/,HTTP 302 Found- 这是一个临时重定向.
  3. 客户要求#2:啊,好的!我在请你http://example.com/myfolder/.
  4. 服务器响应#2:当然,你走了.HTTP 200 OK - 这是你的内容.

所以从客户端到服务器有两个请求.希望你能理解.

ps:请不要使用W3Schools,还有更多更好的资源.

  • 您可以查看w3schools上的教程.它们会更新并不断更新,以符合当前的Web趋势和Web标准.w3fools是一个古老的社区,他们长期以来一直瞄准w3schools.你可能没有意识到w3schools接受了w3fools的批评,并在他们的网络教程中做了必要的改进.所以,我请你不要对w3schools.com做出负面的宣传. (2认同)

dec*_*eze 5

收到请求的 Web 服务器/foo可能会查看它并看到它foo实际上是一个文件夹,并确定该文件夹的实际地址是/foo/. 所以它将响应302重定向到客户端并告诉它/foo/取而代之:

  1. 浏览器到服务器: GET /foo
  2. 服务器到浏览器: 302 Found, Location: /foo/
  3. 浏览器到服务器: GET /foo/
  4. 服务器到浏览器: 200 OK, content...

服务器是否执行此操作取决于您的服务器。最终,您应该始终在链接中使用项目的实际 URL,不要依赖服务器为您隐式地“修复它”。