我在我的 Windows 7 本地主机上安装了 Jenkins 和 Subversion。他们独立工作很好。
我安装了 Jenkins 的 Subversion 插件。从这个页面https://wiki.jenkins-ci.org/display/JENKINS/Subversion+Plugin#SubversionPlugin-Windowsspecificpostcommithook我有 post-commit.bat 和描述的 vbs 脚本。
此视觉基本代码失败:
url = jenkins + "crumbIssuer/api/xml?
xpath=concat(//crumbRequestField,"":"",//crumb)"
Set http = CreateObject("Microsoft.XMLHTTP")
http.open "GET", url, False
出现此错误:
javax.servlet.ServletException: 必须是 POST,不能在 hudson.model.AbstractModelObject.requirePOST(AbstractModelObject.java:88) 获取
我认为这段代码正在获取 CSRF 保护令牌,但失败了。
https://wiki.jenkins-ci.org/display/JENKINS/Remote+access+API说:
Jenkins uses the "Prevent Cross Site Request Forgery exploits"
security option (which it should), when you make a POST request,
you have to send a CSRF protection token as an HTTP request header.
为了简单起见,我没有打开 CSRF 保护,尽管我知道我应该这样做。
*我删除了 .vbs 脚本文件的 GET 部分,所以现在它只调用 POST 部分,并且根本不引用 crumb 变量或更改请求标头,但我仍然得到“必须是 POST,可以'不是 GET" 错误。
是什么赋予了?