问题
关于这个问题还有其他一些问题(特别是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/