Orbeon Forms为submission添加Ocp-Apim-Subscription-Key请求头不生效
问题根因
你遇到的403错误大概率是自定义请求头被Orbeon默认的白名单规则拦截导致的:Orbeon默认只允许部分标准请求头随submission发出,Ocp-Apim-Subscription-Key属于自定义头,不在默认白名单内,所以请求发出时会被自动移除,Azure APIM收不到对应头就返回403。
解决方案
- 第一步:添加自定义头白名单配置
在Orbeon的properties-local.xml配置文件中新增如下配置,将Ocp-Apim-Subscription-Key加入允许的请求头列表:
<property as="xs:string" name="oxf.xforms.submission.allowed-headers" value="Ocp-Apim-Subscription-Key"/>
如果你的配置文件中已经存在oxf.xforms.submission.allowed-headers属性,直接在现有value值后用空格分隔追加Ocp-Apim-Subscription-Key即可,配置修改完成后重启Orbeon服务生效。
- 第二步:清理submission冗余属性
你当前配置的serialization和mediatype属性不适用于GET请求,属于冗余配置,可能引发属性冲突导致头配置失效,可以删除这两个属性,调整后的submission配置参考:
<xf:submission id="OrganisationStructureService-submission" class="fr-service" ref="instance('fr-service-request-instance')" resource="https://securextst-api.securex.eu/sssservices/employerservice/api/firm/0000000128/identification" method="get" replace="instance" instance="fr-service-response-instance"> <xf:header> <xf:name>Ocp-Apim-Subscription-Key</xf:name> <xf:value>dummykey</xf:value> </xf:header> </xf:submission>
- 第三步:验证请求头传输
可以通过Azure APIM的请求日志,或在Orbeon部署服务器抓包,确认请求发出时已经携带Ocp-Apim-Subscription-Key头,排除其他环境配置问题。
内容的提问来源于stack exchange,提问作者harm securex
相关产品推荐
相关产品推荐

