我正在运行一个旨在接受XML帖子的Azure Web应用程序。当我使用cURL发布到网址时,一切正常,但是,当使用Apache Camel / HTTP时,POST会导致400错误。当我查看日志文件时,唯一的区别是cs-host字段。对于cURL命令,值只是域(例如azurewebsites.net),但Apache POST附加端口80(例如azurewebsites.net:80)。我添加了一个重写规则,可以从调用中删除端口(下面的规则详细信息),但POST仍会导致400错误。我能找到的最近的相关帖子在这里:Including Port number in HTTP HOST header causes Service Unavailable error但不幸的是它看起来与Netscaler有关,而不是Azure Web App,并且该决议没有提供任何详细的指导..感谢任何输入!
这里是重写规则:
<?xml version="1.0" encoding="utf-8"?>
<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
<location path="domain" xdt:Locator="Match(path)">
<system.webServer>
<rewrite xdt:Transform="InsertBefore(/configuration/location[(@path='domain')]/system.webServer/*[1])">
<rules>
<rule name="domainrule1" stopProcessing="true">
<match url="domain.azurewebsites.net:80(.*)" />
<action type="Redirect" url="http://domain.azurewebsites.net/{R:1}" />
</rule>
</rules>
</rewrite>
</system.webServer>
</location>
<location path="~1domain" xdt:Locator="Match(path)">
<system.webServer>
<rewrite>
<rules>
<rule name="domainrule2" stopProcessing="true" xdt:Transform="Insert">
<match url="domain.azurewebsites.net:80(.*)" />
<action type="Redirect" url="http://domain.azurewebsites.net/{R:1}" />
</rule>
</rules>
</rewrite>
</system.webServer>
</location>
</configuration>