访问 Jenkins v2.73.1 crumbIssuer REST 时出现 404 API
Getting 404 when accessing Jenkins v2.73.1 crumbIssuer REST API
我尝试调用 Jenkins crumIssuer API 但出现以下错误。
使用 Jenkins 版本 2.19.1,不使用版本 2.73.1
<html>
<head>
<meta http-equiv="Content-Type" content="text/html;charset=utf-8"/>
<title>Error 404 Not Found</title>
</head>
<body><h2>HTTP ERROR 404</h2>
<p>Problem accessing /crumbIssuer/api/json. Reason:
<pre> Not Found</pre></p><hr><a href="http://eclipse.org/jetty">Powered by Jetty:// 9.4.z-SNAPSHOT</a><hr/>
</body>
</html>
您必须在管理 Jenkins -> 配置全局安全性下打开 Prevent Cross Site Request Forgery exploits
选项。
Rob Hales 的回答是正确的。
我在尝试针对 jenkins(版本 2.89.3)实例 运行 以下 Ansible 代码时遇到了同样的问题。
- name: "Get csrf token"
uri:
url: 'http://127.0.0.1:8080/crumbIssuer/api/xml?xpath=concat(//crumbRequestField,":",//crumb)'
user: "{{ jenkins_admin_user }}"
password: "{{ jenkins_admin_pass }}"
force_basic_auth: yes
return_content: yes
对我来说,创建具有以下内容的文件 /var/jenkins_home/init.groovy.d/csrf.groovy
并 重新启动 jenkins 后问题得到解决:
import hudson.security.csrf.DefaultCrumbIssuer
import jenkins.model.Jenkins
def instance = Jenkins.instance
instance.setCrumbIssuer(new DefaultCrumbIssuer(true))
instance.save()
有关详细信息,请参阅 https://wiki.jenkins.io/display/JENKINS/CSRF+Protection。
我尝试调用 Jenkins crumIssuer API 但出现以下错误。 使用 Jenkins 版本 2.19.1,不使用版本 2.73.1
<html>
<head>
<meta http-equiv="Content-Type" content="text/html;charset=utf-8"/>
<title>Error 404 Not Found</title>
</head>
<body><h2>HTTP ERROR 404</h2>
<p>Problem accessing /crumbIssuer/api/json. Reason:
<pre> Not Found</pre></p><hr><a href="http://eclipse.org/jetty">Powered by Jetty:// 9.4.z-SNAPSHOT</a><hr/>
</body>
</html>
您必须在管理 Jenkins -> 配置全局安全性下打开 Prevent Cross Site Request Forgery exploits
选项。
Rob Hales 的回答是正确的。
我在尝试针对 jenkins(版本 2.89.3)实例 运行 以下 Ansible 代码时遇到了同样的问题。
- name: "Get csrf token"
uri:
url: 'http://127.0.0.1:8080/crumbIssuer/api/xml?xpath=concat(//crumbRequestField,":",//crumb)'
user: "{{ jenkins_admin_user }}"
password: "{{ jenkins_admin_pass }}"
force_basic_auth: yes
return_content: yes
对我来说,创建具有以下内容的文件 /var/jenkins_home/init.groovy.d/csrf.groovy
并 重新启动 jenkins 后问题得到解决:
import hudson.security.csrf.DefaultCrumbIssuer
import jenkins.model.Jenkins
def instance = Jenkins.instance
instance.setCrumbIssuer(new DefaultCrumbIssuer(true))
instance.save()
有关详细信息,请参阅 https://wiki.jenkins.io/display/JENKINS/CSRF+Protection。