在IIS7中启用HTML文件的POST请求

问题
关于这个问题还有其他一些问题(特别是405方法不允许的错误),但是我还没有find似乎可行的解决scheme。

我有一个只在HTML和JavaScript(无后端)的Web应用程序,JavaScript在窗体中使用POST。 我知道,IIS看到HTML文件为静态,只允许他们使用GET和HEAD动词,所以当表单发布时,我得到“405方法不允许…不能显示,因为无效的方法(HTTP动词)是正在使用”。

组态
Win 7机器上有IIS 7的默认安装。 默认情况下,ISAPI / CGI / ASP等,和WebDav都禁用/未安装。 我已更改的唯一设置是针对特征委派下的某些function添加读取/写入function。

在默认网站上的处理程序映射下我有OPTIONSVerbHandler,TRACEVerbHandler和StaticFile。 StaticFile请求限制显示所有动词启用,访问读取,仅当请求被映射到文件或文件夹时调用处理程序。

System.Web.DefaultHttpHandler属性显示动词GET,HEAD和POST。

尝试到目前为止
如果我设置了另一个处理程序映射,复制OPTIONS,但将其动词设置为POST,则405错误消失,但是我得到一个空白页面。

正如在这个问题的底部附近提示的,我尝试添加到我的web.config,但它似乎没有任何影响:

<add name="HttpPost"/> 

(我也做了同样的configurationGUI,并且还添加了HttpPostLocalhost。)

我已经尝试改变张贴到POST在HTML( 以防万一 ),但是没有效果。

我也试着明确地允许请求过滤下的动词,但这也没有帮助。


有没有人有任何其他的想法? 我认为这将工作,如果我安装ASP并更改所有的文件扩展名,但这似乎是不必要的。

所以看起来像张贴到HTML文件是不可能在IIS中安装后端语言来解释的HTML文件,而不是IIS静态文件处理程序。 如果有人知道不同,请让我知道! (只要说清楚,Apache就没有这个问题。)

由@ JudasIscariot1651链接的文章,然而,它需要安装ASP,并将打破你的网站,如果你使用的不是ASP的后端语言(大概只有当张贴到HTML网页 – 我无法testing) 。 你需要configuration你使用的任何语言来处理html文件,而不是静态文件处理程序。

如果你不使用后端语言,或者使用ASP,那么这里有一个ASP版本的副本(访问权限在post中修改过) – 首先安装ASP和ISAPI:

 <add name="html" path="*.html" verb="*" modules="IsapiModule" scriptProcessor="%windir%\system32\inetsrv\asp.dll" resourceType="Unspecified" requireAccess="None" /> 

如果您使用PHP,则需要使用以下内容(针对PHP设置进行调整) – 假设您已经安装了PHP和CGI:

 <add name="html" path="*.html" verb="*" modules="FastCgiModule" scriptProcessor="C:\Program Files (x86)\PHP\php-cgi.exe" resourceType="Unspecified" requireAccess="None" /> 

添加ISAPI模块,并为“* .html”文件添加一个脚本处理处理程序,将它们映射到例如默认的asp处理程序,在web.config中。

看到这个博客文章:http: //zhongchenzhou.wordpress.com/2011/12/05/iis-7-7-5-allow-post-requests-to-html-files/