ADF Web活动Authorization值含特殊字符报错,如何正确转义?
我有一个包含单个Web活动的Azure Data Factory(ADF)管道,在该Web活动的请求头中设置了一个Authorization头,其值为:
"Authorization":"v4cVQr3AkUwP3LMNUCSeQg==mirwVOd7MxPBGt6x0bEeIBTp4x8cCOkB+Vsa6cMfadskMllP5PcKjgZEExmVw4bvDpmKdki1+CaGPiSgrazLnR930R2BVmpZwq9y2K7Yj7REHpkmNNqCRn/XGpoKJkKByifQKyDTAr7StpZVUGEovw=="
无论尝试何种操作,都会收到如下错误:
调用端点'https://rest.myabsorb.com'出错。响应状态码:'NA - Unknown'。详细信息:异常消息:'NA - Unknown [ClientSideException] 值'v4cVQr3AkUwP3LMNUCSeQgmirwVOd7MxPBGt6x0bEeIBTp4x8cCOkB+Vsa6cMfadskMllP5PcKjgZEExmVw4bvDpmKdki1+CaGPiSgrazLnR930R2BVmpZwq9y2K7Yj7REHpkmNNqCRn/XGpoKJkKByifQKyDTAr7StpZVUGEovw'格式无效。请求未从客户端发送至服务器。
手动移除Authorization值中的特殊字符后,请求可以正常发送至服务器(仅返回“密码错误”提示),说明ADF认可移除特殊字符后的请求格式。
我曾尝试使用嵌套的@replace(replace(replace(<value>, '=', '\='), '+', '\+'), '/', '\/')函数替换特殊字符,但并未解决问题,依然收到相同错误。
反斜杠\是否不是正确的转义字符?如何让该Web活动成功发起请求?
无需对Authorization值做转义处理
你的Authorization值是Base64编码内容,ADF的Web活动请求头原生支持这类包含+、=、/的字符,不需要额外添加反斜杠转义。之前的转义操作反而给值增加了无效的反斜杠,导致ADF客户端校验不通过,根本没发送请求到服务器。正确使用方式
- 如果是直接在Web活动的请求头中输入值:直接粘贴原始的Base64字符串即可,不要添加任何转义符。
- 如果是通过变量或表达式引用:直接使用
@variables('yourAuthVariable')或对应的表达式即可,不需要嵌套replace进行转义。
额外验证API要求
确认目标API的Authorization头是否需要前缀(比如Bearer),不过从你移除特殊字符后返回“密码错误”的情况来看,API接受当前的头格式,问题核心还是出在错误的转义操作上。
内容的提问来源于stack exchange,提问作者SUMguy

