POST 403禁止使用ScriptResource.axd

时间:2016-02-17 13:49:35

标签: asp.net iis-7.5

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

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相同,但效果非常好)。我已经在网上搜索了我们为什么会遇到这个问题的线索,它似乎主要与<handlers>中的<system.webServer>部分或<httpHandlers>中的<system.web>相关。 1}}。相关部分列在下面:

<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上。我确实尝试在POST的这两个位置添加ScriptResource.axd作为动词,但这也不起作用。

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

此时,我完全不知道可能导致我们这个奇怪问题的原因。

2 个答案:

答案 0 :(得分:2)

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

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

enter image description here

答案 1 :(得分:1)

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