我正在运行一个Apache服务器。当我尝试访问一个不存在的元素而不是返回404状态代码并将我重定向到默认错误页面时,我注意到比服务器更多的安全测试是返回默认错误页的200 HTTP状态代码。我怀疑这并不是这个问题唯一的失败。
有人可以建议我一个检查最常见的HTTP状态代码的进程吗?
发布于 2012-03-29 09:54:36
我将使用一个Bash脚本,为每个响应类型调用一次netcat,并使用适当的输入生成每种不同类型的响应代码。我会通过管道grep来检查正确的响应,并在STDERR上回显一条消息,如果消息不正确。
对于2xx、3xx和4xx范围来说,这应该是相对容易的,前提是您的服务器上存在实际生成每个不同响应代码的URL。5xx范围引用服务器端错误,因此为了有意调用它们,您需要在服务器上设置导致每个错误的特定URL。最好使用更完整的HTTP (如curl或wget )来测试1xx范围。
解决这个问题的方法很可能不止一种。
有一个某些版本的netcat中的讨厌的bug,这意味着它在完成STDIN的读取之后就会退出。此外,这个buggy版本附带的手册页包含一个不起作用的示例。解决方法是-q <number>选项,它指定在退出前等待答案的时间数。
echo -ne "GET / HTTP/1.1\nHost: example.com\n\n" | nc -q 1 example.com 80 | grep -q "HTTP/1.1 301" || echo "HTTP 302 test failed!" >&2https://serverfault.com/questions/374718
复制相似问题