Windows 7 ローカルホストに Jenkins と Subversion がインストールされています。それらは独立して正常に動作します。
Jenkins 用の Subversion プラグインがインストールされています。このページからhttps://wiki.jenkins-ci.org/display/JENKINS/Subversion+Plugin#SubversionPlugin-Windowsspecificpostcommithook post-commit.bat と vbs スクリプトが記述されています。
この Visual Basic コードは失敗します。
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) で GET することはできません
このコードは 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 変数を参照したり、要求ヘッダーをまったく変更したりしませんが、それでも「Must be POST, Can GET しないでください」というエラーが表示されます。
何を与える?