对于一项任务,我编写了一个服务于 HTML 文件的服务器,并且我应该使用我的 Web 浏览器作为测试客户端。我还被告知,如果有一个不存在的文件的请求,我应该发送以下内容
HTTP/1.1 404 Not Found\r\n\r\n
,如果还有其他问题
HTTP/1.1 500 Internal Server Error\r\n\r\n"
我已经运行了应该导致发送的测试,但是我的浏览器窗口中没有任何反应?我应该从发送此类请求中获得任何视觉反馈吗?
在 HTML 响应中,每一行之后应该只有一个 CRLF(回车和换行)。所以你可以先去掉多余的\r\n
.
同样在第二行,您可以将 HTML 响应发送回客户端,说明如果您想显示错误是什么错误。这通常是典型的 Web 服务器所做的,如果没有定义,它有默认的错误页面。如果您不发送任何 HTTP 标头,那么您可以插入要发送回的 HTML 正文,例如<h1> No page found</h1>
第二行。
在 http 响应中包含“实体”
HTTP/1.1 404 Not Found
Content-Type: text/html
Content-Length: 10
01234576789
每行以 CRLF 结束。请务必正确计算 Content-Length。
我看到这是一个学习练习,并且了解您可能已被告知以这种方式实现服务器。但记住这一点......
这是实现 Web 服务器/服务的错误方法。正确的方法是找到现有的实现并在此基础上构建您的服务。
如果您要正确地从头开始构建 Web 服务器,则需要做很多工作。以及您无法正确执行此操作的机会;即,您不会根据 HTTP 规范所说的服务器应该如何运行来实现您的服务。你会遗漏一些事情,以错误的方式做事,等等。
请不要这样做。那里已经有太多损坏的(即不合规的)Web 服务器。我们不需要更多。
如果您决定从头开始实施 HTTP,那么您(您)需要彻底阅读和理解HTTP 规范。而且您(您)需要对浏览器如何实现规范的客户端进行自己的基础研究......以及因此您需要在服务器端做什么才能使浏览器“正常”运行。