【问题标题】:POST 403 Forbidden for ScriptResource.axdPOST 403 Forbidden for ScriptResource.axd
【发布时间】:2016-02-17 13:49:35
【问题描述】:

我们的一个网站的开发版本遇到了一个奇怪的问题。通过DropDownListOnChange事件触发页面回发时,浏览器控制台显示如下错误:

POST <URL here> 403 (Forbidden)
Uncaught #<Error>

查看生成的 IIS 错误页面没有帮助。表示如下:

Module  ManagedPipelineHandler
Notification    ExecuteRequestHandler
Handler PageHandlerFactory-Integrated-4.0
Error Code  0x00000000

这是给ScriptResource.axd。现在这是奇怪的部分:直到我们的其他开发人员开始发布该网站,这个问题才开始发生。以前,我发布它没有任何问题。 web.config 没有任何变化(事实上,它与我们的生产 web.config 相同,完美运行)。我在网上搜索了有关我们为什么会遇到此问题的线索,它似乎主要与&lt;system.webServer&gt; 中的&lt;handlers&gt; 部分或&lt;system.web&gt; 中的&lt;httpHandlers&gt; 有关。下面列出了相关部分:

<httpHandlers>
  <remove verb="*" path="*.asmx" />
  <add verb="*" path="*.asmx" validate="false" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
  <add verb="*" path="*_AppService.axd" validate="false" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
  <add verb="GET,HEAD" path="ScriptResource.axd" type="System.Web.Handlers.ScriptResourceHandler, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" validate="false" />
</httpHandlers>

<handlers>
  <remove name="WebServiceHandlerFactory-Integrated" />
  <remove name="ScriptHandlerFactory" />
  <remove name="ScriptHandlerFactoryAppServices" />
  <remove name="ScriptResource" />
  <add name="ScriptHandlerFactory" verb="*" path="*.asmx" preCondition="integratedMode" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
  <add name="ScriptHandlerFactoryAppServices" verb="*" path="*_AppService.axd" preCondition="integratedMode" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
  <add name="ScriptResource" preCondition="integratedMode" verb="GET,HEAD" path="ScriptResource.axd" type="System.Web.Handlers.ScriptResourceHandler, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
</handlers>

据我所见,这似乎与其他用户所说的适合他们的说法相符。值得注意的一件有趣的事情是 403 Forbidden 似乎在POST 上。我确实尝试在 ScriptResource.axd 的两个位置添加 POST 作为动词,但这也不起作用。

该网站托管在使用网络服务的应用程序池下的 IIS 7.5 中。网络服务在网站的根文件夹下拥有完全控制权。

在这一点上,我完全不知道是什么导致了我们的奇怪问题。

【问题讨论】:

  • 我有同样的问题,当单击更新面板内的按钮获取 scriptResource.axd?d=....... 时,我收到错误 403,这仅发生在本地托管服务器上,一切正常

标签: asp.net iis-7.5


【解决方案1】:

我的主机使用 Plesk,在他们升级服务器后我也遇到了这个问题。

将 Web 应用程序防火墙模式更改为仅关闭/检测后,此问题已修复。

【讨论】:

    【解决方案2】:

    我在 plesk 托管服务器上遇到了同样的问题,在跟踪请求并检查它为什么返回 403 access is denied 错误后,我发现托管服务器安装了 Web 应用程序防火墙 (WAF) 并且此防火墙阻止了这些请求,所以你需要添加规则以允许这些请求或将其关闭。

    【讨论】:

    • 谢谢,我遇到了这个问题。我花了很长时间才想到看 WAF
    【解决方案3】:

    对于使用 Plesk 控制面板的托管公司,您可以关闭 Web 应用程序防火墙 (WAF),但 WAF 的目的是帮助保护您的网站免受各种攻击。相反,仅关闭导致问题的特定规则 ID。在这种情况下,您希望在您的网站上允许 .axd 文件。

    1. 通过打开 Plesk WAF 页面上的“ModSecurity 日志文件”来识别这个被违反的特定规则 ID。

    2. 在日志文件中搜索 403 Access Denied 消息,然后查找类似于 [id "942440"] 的子字符串。这是被违反的规则 ID。

    3. 通过在 Plesk WAF 页面的“关闭安全规则”部分中键入 ID 号来关闭适用于此问题的“安全规则”。在本例中,您只需在文本框中键入数字“920440”。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-09-21
      • 1970-01-01
      • 1970-01-01
      • 2017-01-14
      • 1970-01-01
      • 2012-05-26
      • 2021-02-26
      • 1970-01-01
      相关资源
      最近更新 更多