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

Dem*_*tor 6 iis iis-7

问题
关于此问题还有很多其他问题(特别是 405 Method Not Allowed 错误),但我还没有找到似乎有效的解决方案。

我只有一个 html 和 javascript 的 web 应用程序(没有后端),javascript 在表单中使用 POST。我知道 IIS 将 html 文件视为静态文件,并且只允许它们使用 GET 和 HEAD 动词,因此在发布表单时,我收到“405 Method Not Allowed...无法显示,因为无效方法(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"/>
Run Code Online (Sandbox Code Playgroud)

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

我试过在 html 中将 post 更改为 POST (以防万一),但这没有效果。

我还尝试过明确允许请求过滤下的动词,但这也无济于事。


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

Dem*_*tor 5

因此,如果不安装后端语言来解释 html 文件而不是 IIS 静态文件处理程序,则在 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" />
Run Code Online (Sandbox Code Playgroud)

如果您使用的是 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" />
Run Code Online (Sandbox Code Playgroud)