Possível bug no módulo de reescrita de URL do IIS ou é apenas eu?

1

Ok, então tive a brilhante idéia de executar um IIS8 W2012 com regras de reescrita para fazer algum proxy reverso para mim, não porque é a melhor escolha, mas porque eu não queria outra caixa resolvendo outro problema .

Eu consegui fazer tudo correr muito bem com dois subdiretórios ligando para dois servidores Linux backend, e todas as tags de saída pareciam ser reescritas como deveriam. Até que tentei logar e percebi que pulava alguns campos de formulário.

Após uma longa noite, eu consegui descobrir o que acionou o mecanismo de reescrita para não lidar com os formulários, neste caso, e isso tinha mais a ver com atributos que tinham um hífen ou sublinhado nele. As formas que meus sites Linux estavam produzindo continham a linha

<form accept-charset="UTF-8" action="/login" ...

que, claro, continha um atributo hifenizado.

Então, eu comecei a descobrir e vi isso:

/test/default.htm

<html>
    <a href="/ahrefpage.htm">This ahref has no dummy attribute</a>  </br>
    <a dummy="x" href="/ahrefpage.htm">This ahref has a dummy attribute</a> </br>
    <a dum-my="x" href="/ahrefpage.htm">This ahref has a hyphen dummy attribute</a> </br>
    <a dum_my="x" href="/ahrefpage.htm">This ahref has an underscore dummy attribute</a>    </br>
</html>

com o seguinte web.config

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <system.webServer>
        <rewrite>
            <outboundRules>
                <rule name="OutboundRewriteTestPage" preCondition="isHtml" enabled="true">
                    <match filterByTags="A, Area, Base, Form, Frame, Head, IFrame, Img, Input, Link, Script" customTags="" pattern="^/(.*)" />
                    <action type="Rewrite" value="/test/{R:1}" />
                </rule>
                <preConditions>
                    <preCondition name="isHtml">
                        <add input="{RESPONSE_CONTENT_TYPE}" pattern="^text/html" />
                    </preCondition>
                </preConditions>
                <customTags>
                </customTags>
            </outboundRules>
        </rewrite>
        <urlCompression doStaticCompression="false" doDynamicCompression="false" />
    </system.webServer>
</configuration>

Então, a página resultante foi esta

This ahref has no dummy attribute           https://portal.xx.com/test/ahrefpage.htm
This ahref has a dummy attribute            https://portal.xx.com/test/ahrefpage.htm
This ahref has a hyphen dummy attribute     https://portal.xx.com/ahrefpage.htm
This ahref has a underscore dummy attribute https://portal.xx.com/ahrefpage.htm

Então, basicamente, a questão é, isso é outra implementação ruim da MS de uma tecnologia que funciona bem no Linux, ou eu perdi alguma coisa? Existe uma solução alternativa - exceto para modificar o material de origem, o que anula o propósito.

Obrigado Chris.J

    
por Chris.J 07.08.2013 / 11:33

0 respostas

Tags