Java Web Service在本地计算机上保持编码,在开发时进行转换

时间:2018-11-15 22:28:43

标签: java web-services tomcat

我有一个奇怪的问题,我希望有人能有所经验并能帮助我。

我在计算机上安装了一个tomcat,可以在需要时在本地运行它,但是随后我会将其发布到开发箱中进行测试。但是,URL编码的行为有所不同。

例如,HTTP动词如下所示(在邮递员中,删除了URL的其余部分)

e.originalEvent.dataTransfer

在我的本地计算机上,我在localhost_access_log中看到了这一点:

DELETE   .../AAASnsAATAALI%2F5AAK/20181114110451

(我期望400。我已经了解了org.apache.tomcat.util.buf.UDecoder.ALLOW_ENCODED_SLASH = true,我需要通过StackOverflow进行设置,这一切都可以正常进行)

但是,我在开发机器上的localhost_access_log中看到了这一点:

"DELETE ../AAASnsAATAALI%2F5AAK/20181114110451 HTTP/1.1" 400

我当然会收到404,因为某些东西将该%2F转换为/导致我的URL路径错误。

我对我的机器和开发机器之间的区别感到困惑。我不认为这可能是tomcat,因为我很确定自己可以直接安装(我比较了catalina.properties,它们是相同的)。这可能是IIS中导致开发箱出现问题的原因吗?我已经在这个头上摸了一段时间,所以我希望外面有人发生过这种事情。

任何指导表示赞赏。

编辑:

我最近发现,如果我直接引用tomcat进行服务调用,而不是使用Intranet URL,则会收到预期的400错误。因此,我觉得必须更改Intranet站点的设置。我现在正在经历它,但是没有经验。

1 个答案:

答案 0 :(得分:0)

因此,如果有人遇到这个问题,我已经可以通过反复试验找出解决方案。

对于初学者来说,这是一个与IIS相关的问题。我没有足够的经验来回答特定的问题,但是如果出现任何问题,我会尽力而为。

我认为这可能是.NET 4.5(也许是4.0)的问题,在此响应时,我们处于4.7。因此,我听说他们在4.5中对URL的要求更为严格。默认情况下,IIS会解码您的编码URL。

需要做的第一件事是在IIS管理器中安装URL重写模块(或有足够的资金来了解编辑站点的web.config的语法)。我们没有这个,但是我找到了可以戴上它的人。需要向该模块添加新规则。我已经包含了适用于我的规则的web.config结果:

<rewrite>
    <rules>
        <rule name="Keep Original Encoded URL String" stopProcessing="true">
            <match url="(.*)" />
            <conditions>
                <add input="{UNENCODED_URL}" pattern="(.*)" />
            </conditions>
            <action type="Rewrite" url="{C:0}" />
        </rule>
    </rules>
</rewrite>

基本上,这就是说获取URL并返回未编码的URL。

获得所有这些并不是结束的地方。输入该规则后进行尝试后,我收到此错误:

A potentially dangerous Request.Path value was detected from the client (%) rewrite.

在4.0中,URL的默认无效字符。

< > * % & : \ ?

因此,为了允许包含%,您必须通过设置requestPathInvalidCharacters并删除%来覆盖此默认值,这就是我现在要拥有的。

<system.web>
    <httpRuntime requestPathInvalidCharacters="<,>,*,&,:,\,?" />
</system.web>

这样一来,我就能获得我期望的400错误请求。为了解决这个问题,请将其放在catalina.properties文件中。

org.apache.tomcat.util.buf.UDecoder.ALLOW_ENCODED_SLASH=true

此解决方案对我有用。如果有人发现与他们有关的问题,请告诉我,以便我解决。希望这种解决方案可以对可能遇到问题的任何其他人起作用。

相关问题