无法获取http标头
您好,我从APIM获得了api的源代码视图,并对其进行了修改,以获取htttp标题“Authorization”,并将其记录到日志文件中。我在代码中添加了两个条目,一个用于插入,另一个用于输出。在结尾处我加了一行无法获取http标头,http,wso2,wso2carbon,wso2-am,Http,Wso2,Wso2carbon,Wso2 Am,您好,我从APIM获得了api的源代码视图,并对其进行了修改,以获取htttp标题“Authorization”,并将其记录到日志文件中。我在代码中添加了两个条目,一个用于插入,另一个用于输出。在结尾处我加了一行 <property name="AuthHeader" expression="$trp:Authorization"/> 这意味着我没有得到正确的http头值,代码是否有问题?请帮助,完整的API代码如下 谢谢, 德鲁 500 状态报告 内部服务器错误 通过默认API
<property name="AuthHeader" expression="$trp:Authorization"/>
这意味着我没有得到正确的http头值,代码是否有问题?请帮助,完整的API代码如下
谢谢,
德鲁
500
状态报告
内部服务器错误
通过默认API调用错误
30000
过错
-1
0
1
0
-1
默认情况下,身份验证处理程序会删除授权标头。这就是为什么你似乎无法访问或记录它。处理程序在中介插入序列之前执行操作
可以通过在/repository/conf中编辑api-manager.xml配置文件来保留身份验证头。只需取消对以下节点的注释并将值更改为false:
<RemoveOAuthHeadersFromOutMessage>false</RemoveOAuthHeadersFromOutMessage>
false
调用API时,是否确实发送授权标头?请在分配AuthHeader属性并进行检查后立即添加日志。是的,我用于发送标头的命令是“curl-v \-H”授权:Bearer a533cffb7d57895e377d4ab43bbe0c3”\-X GET`所以授权标头存在?这是正确的吗?(抱歉,这方面的初学者)将在AuthHeader属性中分配后记录它。非常感谢。
TID: [0] [AM] [2014-11-19 04:23:01,997] INFO {org.apache.synapse.mediators.builtin.LogMediator} - AuthHeader value = null {org.apache.synapse.mediators.builtin.LogMediator}
TID: [0] [AM] [2014-11-19 04:23:07,335] INFO {org.apache.synapse.mediators.builtin.LogMediator} - AuthHeader value = null {org.apache.synapse.mediators.builtin.LogMediator}
TID: [0] [AM] [2014-11-19 04:56:17,177] INFO {org.apache.synapse.mediators.builtin.LogMediator} - AuthHeader value = null {org.apache.synapse.mediators.builtin.LogMediator}
<api name="admin--fte" context="/fte">
<resource methods="POST GET DELETE OPTIONS PUT" url-mapping="/*">
<inSequence>
<property name="AuthHeader" expression="$trp:Authorization"/>
<property name="isDefault" expression="get-property('transport', 'WSO2_AM_API_DEFAULT_VERSION')"/>
<filter source="get-property('isDefault')" regex="true">
<then>
<log level="custom">
<property name="STATUS" value="Faulty invoking through default API.Dropping message to avoid recursion.."/>
</log>
<payloadFactory media-type="xml">
<format>
<am:fault xmlns:am="http://wso2.org/apimanager">
<am:code>500</am:code>
<am:type>Status report</am:type>
<am:message>Internal Server Error</am:message>
<am:description>Faulty invoking through default API</am:description>
</am:fault>
</format>
<args/>
</payloadFactory>
<property name="HTTP_SC" value="500" scope="axis2"/>
<property name="RESPONSE" value="true"/>
<header name="To" action="remove"/>
<property name="NO_ENTITY_BODY" scope="axis2" action="remove"/>
<property name="ContentType" scope="axis2" action="remove"/>
<property name="Authorization" scope="transport" action="remove"/>
<property name="Host" scope="transport" action="remove"/>
<property name="Accept" scope="transport" action="remove"/>
<send/>
</then>
<else>
<header name="WSO2_AM_API_DEFAULT_VERSION" scope="transport" value="true"/>
<property name="uri.var.portnum" expression="get-property('http.nio.port')"/>
<send>
<endpoint>
<http uri-template="http://localhost:{uri.var.portnum}/fte/1.0">
<timeout>
<duration>30000</duration>
<responseAction>fault</responseAction>
</timeout>
<suspendOnFailure>
<errorCodes>-1</errorCodes>
<initialDuration>0</initialDuration>
<progressionFactor>1.0</progressionFactor>
<maximumDuration>0</maximumDuration>
</suspendOnFailure>
<markForSuspension>
<errorCodes>-1</errorCodes>
</markForSuspension>
</http>
</endpoint>
</send>
</else>
</filter>
</inSequence>
<outSequence>
<property name="messageType" value="application/json" scope="axis2" type="STRING"/>
<log level="custom">
<property name="AuthHeader value" expression="get-property('AuthHeader')"/>
</log>
<send/>
</outSequence>
</resource>
<handlers>
<handler class="org.wso2.carbon.apimgt.gateway.handlers.common.SynapsePropertiesHandler"/>
</handlers>
</api>
<RemoveOAuthHeadersFromOutMessage>false</RemoveOAuthHeadersFromOutMessage>