Ativando solicitações POST para arquivos html no IIS7

5

Problema
Houve algumas outras perguntas sobre isso (em particular, o erro 405 Method Not Allowed), mas ainda não encontrei uma solução que pareça funcionar.

Eu tenho um aplicativo da web em HTML e javascript apenas (sem backend) e o JavaScript usa POST em formulários. Eu entendo que o IIS vê arquivos html como estáticos e só permite que eles usem verbos GET e HEAD, então quando um formulário é postado estou recebendo "405 Método não permitido ... não pode ser exibido porque um método inválido (verbo HTTP) é sendo usado ".

Configuração
Eu tenho uma instalação padrão do IIS 7 em uma máquina Win 7. Por padrão ISAPI / CGI / ASP etc, e WebDav estão todos desabilitados / não instalados. A única configuração que eu alterei é adicionada leitura / gravação para alguns dos recursos em Delegação de Recursos.

Em Mapeamentos do Manipulador no Site Padrão, tenho OPTIONSVerbHandler, TRACEVerbHandler e StaticFile. As restrições de solicitação do StaticFile mostram todos os verbos ativados, acesso lido, chamar manipulador somente se a solicitação for mapeada para um arquivo ou pasta.

As propriedades System.Web.DefaultHttpHandler mostram os verbos GET, HEAD e POST.

Tentei até agora
Se eu configurar outro Mapeamento de Manipulador, duplicando OPTIONS, mas definindo outro verbo para POST, o erro 405 desaparecerá, mas, em vez disso, recebo uma página em branco.

Como sugerido perto da parte inferior de esta pergunta, eu tentei adicionar isso ao meu web.config, mas não parece ter qualquer efeito:

<add name="HttpPost"/>

(Eu também fiz o mesmo com a GUI de configuração e também adicionei o HttpPostLocalhost.)

Eu tentei alterar a postagem para o POST no HTML ( apenas no caso ), mas isso não teve efeito .

Eu também tentei permitir explicitamente os verbos em Filtragem de Solicitação, mas isso também não ajudou.

Alguém tem alguma outra ideia? Presumo que funcionará se eu instalar o asp e alterar todas as minhas extensões de arquivo, mas isso parece desnecessário.

    
por Demelziraptor 10.01.2012 / 23:17

2 respostas

4

Portanto, parece que é impossível postar em arquivos html no IIS sem instalar uma linguagem de backend para interpretar os arquivos html em vez do manipulador de arquivos estáticos do IIS. Se alguém souber de maneira diferente, por favor me avise! (Só para deixar claro, o Apache não tem esse problema.)

A postagem vinculada a @ JudasIscariot1651 funciona, entretanto, requer a instalação do ASP e interromperá seu site se você estiver usando uma linguagem de back-end que não seja ASP (presumivelmente somente se postar em páginas html - não consegui testar). Você precisa configurar o idioma que estiver usando para manipular os arquivos html em vez do manipulador de arquivos estáticos.

Se você não estiver usando um idioma de back-end, ou estiver usando ASP, aqui está uma cópia da versão ASP (permissões de acesso modificadas para o exemplo no post) - instale o ASP e o ISAPI primeiro:

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

Se você está usando PHP, você precisa usar o seguinte (ajuste para as configurações do PHP) - presumivelmente você já tem o PHP e o CGI instalados:

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

Adicione os módulos ISAPI e adicione um manipulador de processamento de scripts para arquivos "* .html", mapeando-os para, por exemplo, o manipulador asp padrão, no seu web.config.

Veja este post no blog: link

    
por 11.01.2012 / 00:02

Tags