WSO2 APIM网关将主机头设置为host:port

时间:2015-09-14 21:51:16

标签: wso2 wso2-am

APIM网关将Host标头设置为host:port来调用后端,如下所示:

  

GET / api /类别HTTP / 1.1
接受语言:   en-US,en; q = 0.8,pt; q = 0.6
令牌:   6785ea7b - ####### - ####### - 93f06834660a
接受编码:gzip,   deflate,sdch
X-Forwarded-Server:server01
X-Forwarded-For:   172.XX.XXX.XX
用户代理:Mozilla / 5.0(X11; Linux x86_64)
邮递员令牌:ece4261e-d610-655c-f06c-f24a99f007c8
接受:    /
X-Forwarded-Host:server01
Cache-Control:no-cache
  主持人:api.empresa.net:80
连接:Keep-Alive

这会导致Web应用程序防火墙出现问题,我该如何更改? 环境:RedHat Linux 6.7,APIM 1.9.1

由于

2 个答案:

答案 0 :(得分:1)

根据protocol specification

  

Host request-header字段指定Internet主机和端口   请求的资源编号,从原始编号获得   用户或引用资源给出的URI。

   Host = "Host" ":" host [ ":" port ] ; Section 3.2.2
     

A"主持人"没有任何尾随端口信息意味着默认值   请求服务的端口(例如," 80"用于HTTP URL)。对于   例如,源服务器上的请求   http://www.w3.org/pub/WWW/适当地包括:

   GET /pub/WWW/ HTTP/1.1
   Host: www.w3.org

答案 1 :(得分:1)

我知道你的痛苦。我们的负载均衡器遇到了同样的问题。我相信WSO2会为此做出修复。在此期间,您需要在“/ _system / governance / apimgt / customsequences / in”下创建一个自定义的“in”序列,其中包含以下内容:

<sequence xmlns="http://ws.apache.org/ns/synapse" name="remove_port_In"> 
  <property name="REQUEST_HOST_HEADER" value="api.empresa.net" scope="axis2"/>
</sequence>

然后,您可以在发布之前通过发布者应用程序将其与您的API相关联作为入站自定义序列。