我正在尝试通过python requests.POST()触发jenkins作业。
reply = requests.post(url,
data=data,
cookies=self.__cookies,
auth=(self.__user, self.__pass),
files=files,
)收到的错误: //job/Deploy/job/JOBNAME/buildWithParameters的请求中未包含有效的crumb。返回403。
然后尝试使用以下代码在header中传递crumb:
session = requests.Session()
crum = session.get('https://xxxxxx.xxx.net:7xxx/crumbIssuer/api/json',
auth=(self.__user, self.__pass)).json()
reply = requests.post(url,
data=data,
cookies=self.__cookies,
params={crum['crumbRequestField']: crum['crumb']},
auth=(self.__user, self.__pass),
headers={crum['crumbRequestField']: crum['crumb']},
files=files,
)收到以下错误:
发现无效的crumb 09ee0x69284910425bd94378a1735b3471826e8d5ec077c526562.如果您使用脚本调用此URL,请改用API标记。更多信息:https://jenkins.io/redirect/crumb-cannot-be-used-for-script
我们正在寻找via requests.post()的解决方案
发布于 2020-10-02 04:41:05
为了让它正常工作,你需要一个有效的session、auth和crumb。我们也使用令牌,所以我也添加了令牌
with requests.Session() as s:
s.auth = auth
crumb = s.get(jenkins_url + "crumbIssuer/api/json").json()['crumb']
s.headers.update({"token": token, "Jenkins-Crumb": crumb})然后我们就可以
s.post(url)然后我们就会得到一个201版本。看起来你得到了所有的东西,除了你不是在会话中做,而是用一个简单的请求。用session.post替换requests.post可能就足够了
https://stackoverflow.com/questions/63014344
复制相似问题