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

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

问题
关于此问题还有不少其他问题(特别是 405 方法不允许错误),但我还没有找到似乎有效的解决方案。

我有一个仅使用 html 和 javascript 的 Web 应用程序(无后端),并且 javascript 在表单中使用 POST。我知道 IIS 将 html 文件视为静态文件,并且只允许它们使用 GET 和 HEAD 动词,因此在发布表单时,我收到“405 方法不允许...无法显示,因为使用了无效方法(HTTP 动词)”。

配置
我在一台 Win 7 机器上默认安装了 IIS 7。默认情况下,ISAPI/CGI/ASP 等和 WebDav 均被禁用/未安装。我唯一更改的设置是为功能委派下的某些功能添加了读/写权限。

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

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

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

正如底部所建议的那样问题,我尝试将其添加到我的 web.config 中,但似乎没有任何效果:

<add name="HttpPost"/>

(我也对配置 GUI 做了同样的事情,并且还添加了 HttpPostLocalhost。)

我尝试在 html 中将 post 更改为 POST (万一),但这并没有什么效果。

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


有人有其他想法吗?我假设如果我安装 asp 并更改所有文件扩展名,它就会起作用,但这似乎没有必要。

答案1

因此,如果不安装后端语言(而不是 IIS 静态文件处理程序)来解释 html 文件,则似乎无法在 IIS 中发布到 html 文件。如果有人有不同意见,请告诉我!(只是为了说明,Apache 没有这个问题。)

@JudasIscariot1651 链接的帖子有效,但是,它需要安装 ASP,如果您使用的后端语言不是 ASP,它将破坏您的网站(大概只有在发布到 html 页面时才会这样 - 我无法测试)。您需要配置您使用的任何语言来处理 html 文件,而不是静态文件处理程序。

如果您没有使用后端语言,或者正在使用 ASP,这里有一个 ASP 版本的副本(访问权限已修改为帖子中的示例) - 请首先安装 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" />

答案2

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

请参阅此博客文章:http://zhongchenzhou.wordpress.com/2011/12/05/iis-7-7-5-allow-post-requests-to-html-files/

相关内容