为什么我在 Firebug 中遇到我没有尝试访问的文件时出现网络错误:403 禁止访问?

为什么我在 Firebug 中遇到我没有尝试访问的文件时出现网络错误:403 禁止访问?

问题

我想知道

  • 为什么我得到网络错误:403 禁止访问在 firebug 中查找文件我没有尝试访问

  • 它是否可能对网络服务器造成任何严重问题?

  • 如何修复它。

  • 为什么我的浏览器尝试访问错误消息中的那些文件?

细节

我正在使用 wampserver 2.2 通过浏览器访问文件夹。浏览器与服务器位于同一台计算机上。该计算机运行的是 Windows 7 Ultimate。

当我通过浏览器查看 Web 文件夹时 hXXp://localhost/folder

我可以看到文件夹内容 在此处输入图片描述

但在萤火虫中我得到了网络错误:403 禁止访问

在此处输入图片描述

我并不是故意尝试访问错误消息中的那些文件。您会注意到它们位于与我正在查看的文件夹完全不同的文件夹中。

我检查apache_错误日志看看

[2012 年 9 月 26 日星期三 00:05:10] [错误] [客户端 127.0.0.1] 服务器配置拒绝客户端:C:/apache2,引用:hxxp://localhost/folder/

Wampserver 2.2安装在D盘

我查看了 httpd.conf 文件,但找不到对 c 的任何引用:

当我看着Apache 的 access.log我懂了

127.0.0.1 - - [26/Sep/2012:00:05:10 +0900] "GET /icons/blank.gif HTTP/1.1" 403 217
127.0.0.1 - - [26/Sep/2012:00:05:10 +0900] "GET /icons/back.gif HTTP/1.1" 403 216
127.0.0.1 - - [26/Sep/2012:00:05:10 +0900] "GET /icons/text.gif HTTP/1.1" 403 216
127.0.0.1 - - [26/Sep/2012:00:05:10 +0900] "GET /icons/unknown.gif HTTP/1.1" 403 219
127.0.0.1 - - [26/Sep/2012:00:05:10 +0900] "GET /icons/folder.gif HTTP/1.1" 403 218

配置

  • Wampserver 2.2安装在D盘
  • Apache 2.2.22
  • PHP 5.4.3
  • MySQL 5.5.24
  • Firebug 1.10.3
  • Firefox 15.0.1

答案1

Options Indexes在配置中打开了某项功能。这会导致 Apache 生成您在上面看到的页面。

该页面由 HTML 组成,每个项目的左侧(您看到[ ][TXT]等的位置)通常会显示一个图像,表示该行对应的文件类型。这些图像是请求的,就像任何普通 HTML 页面一样,它们来自/icons/。这实际上不是您的 webroot 中的文件夹,而是使用 之类的别名Alias /icons/ "/usr/share/apache2/icons/"

最后,您已将 Apache 配置的其他部分配置为不允许这些请求,因此最终会得到 403 响应,并且会显示 alt 文本而不是图标。

这不太可能导致任何严重问题,但您通常不会在生产服务器上保持活动状态(无论是Options Indexes还是)。Alias /icons/ ...

答案2

为了修复图标问题,我必须编辑位于 \bin\apache\apache2.2.22\conf\extra 中的 httpd-autoindex.conf

我变了

Alias /icons/ "c:/apache2/icons/"

Alias /icons/ "D:/wamp/bin/apache/apache2.2.22/icons/"

<Directory "c:/apache2/icons">

<Directory "D:/wamp/bin/apache/apache2.2.22/icons/">

图标现在将照常显示。

非常感谢 Ladadadada 为我指明了正确的方向!

答案3

  • 为什么我在 Firebug 中遇到我没有尝试访问的文件时出现网络错误:403 禁止访问?
  1. 你有期权指数在 httpd.conf 中的某个地方。这允许您查看目录中的文件列表,Apache 将自动为您生成此页面并自动尝试添加已知类型的图标。在实时(生产)环境中您不能有索引。

最有可能是定义文档根目录的位置。它可能看起来像这样:

DocumentRoot "${WEBROOT}/"
<Directory "${WEBROOT}/">
    HeaderName HEADER.html
    ReadmeName FOOTER.html
    IndexIgnore FOOTER.html HEADER.html
    Options Indexes FollowSymLinks
    AllowOverride All
    Require all granted
</Directory>
  1. 为什么你会收到网络错误:403 禁止访问? 您收到此消息是因为 Apache 尝试从目录访问图标,而指定位置不存在。仔细检查路径 - 包括 httpd.conf 和 httpd-autoindex.conf。问题可能是缺少斜线。
  • 它是否可能对网络服务器造成任何严重问题?
  1. 显然这不会引起任何问题。但这会显示目录中的文件。因此任何人都可以自由浏览您的文件和目录并可能以不该的方式访问文件,这就是问题所在。所以这不是技术问题,而是人为问题。
  • 如何修复?
  1. 仔细检查路径!
  • 为什么我的浏览器尝试访问错误消息中的那些文件?
  1. 浏览器只是显示由 Apache 生成的页面。它尝试访问页面中的所有图像并显示它们。所以这不是浏览器故障。:)

相关内容