我在这里使用第一个例子得到这个Warning: A secret was passed to "httpRequest" using Groovy String interpolation, which is insecure
。我把keyvar = credentials('key_id')
作为一个环境变量并把它像这样放在
def response = httpRequest url: "https://url...",
customHeaders: [[name: 'Authorization', value: "${keyvar}"]]...
这工作,但不是如何正确地完成在本文档中所描述的,所以接下来,我尝试了它在这里的建议,使用单引号和没有括号。
def response = httpRequest url: "https://url...",
customHeaders: [[name: 'Authorization', value: '$keyvar']]...
这解决了第一个错误,但现在我得到Response Code: HTTP/1.1 401 Unauthorized
,这对我来说,意味着插值不能在单引号内工作,如文档所描述的。
为了使Matt Schuchard在评论中的答案更清楚,以便将来的人偶然发现这一点-您需要删除字符串插值并直接传递变量:
def response = httpRequest url: "https://url...",
customHeaders: [[name: 'Authorization', value: keyvar]]...
这也适用于需要额外前缀的头文件(例如Bearer
):
def response = httpRequest url: "https://url...",
customHeaders: [[name: 'Authorization', value: 'Bearer ' + keyvar]]...
是安全的,而
def response = httpRequest url: "https://url...",
customHeaders: [[name: 'Authorization', value: "Bearer $keyvar"]]...
。
代替httpRequest方法,我有aliOssUpload方法。如果直接将实参传递给实参而不将其重转换为字符串,则无法工作。
可以通过转义$keyvar