问题
关于此问题还有很多其他问题(特别是 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 并更改所有文件扩展名,它会起作用,但这似乎没有必要。
因此,如果不安装后端语言来解释 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)
| 归档时间: |
|
| 查看次数: |
54305 次 |
| 最近记录: |