hi! I want to make a file uploader for Jira, use this client code:
@PostMapping(value = "/rest/api/2/issue/{issueIdOrKey}/attachments",
consumes = MULTIPART_FORM_DATA_VALUE,
produces = APPLICATION_JSON_VALUE)
@Headers("X-Atlassian-Token: no-check")
void uploadAttachment(@PathVariable String issueIdOrKey, @RequestPart(name = "filetoupload") MultiValueMap<String, Object> file);
It doesn't work because header "X-Atlassian-Token: no-check" is't sent
LOG:
2020-02-13 19:37:31.718 DEBUG 29852 --- [nio-8080-exec-1] c.t.issueator.client.JiraClient : [JiraClient#uploadAttachment] ---> POST http://SERVER_URL:8080/rest/api/2/issue/CR-1/attachments HTTP/1.1
2020-02-13 19:37:31.718 DEBUG 29852 --- [nio-8080-exec-1] c.t.issueator.client.JiraClient : [JiraClient#uploadAttachment] Accept: application/json
2020-02-13 19:37:31.718 DEBUG 29852 --- [nio-8080-exec-1] c.t.issueator.client.JiraClient : [JiraClient#uploadAttachment] Authorization: Basic ZmVkb3I6IVEydzNlNHI=
2020-02-13 19:37:31.718 DEBUG 29852 --- [nio-8080-exec-1] c.t.issueator.client.JiraClient : [JiraClient#uploadAttachment] Content-Length: 17
2020-02-13 19:37:31.718 DEBUG 29852 --- [nio-8080-exec-1] c.t.issueator.client.JiraClient : [JiraClient#uploadAttachment] Content-Type: multipart/form-data; charset=UTF-8; boundary=1703f699fc5
2020-02-13 19:37:31.718 DEBUG 29852 --- [nio-8080-exec-1] c.t.issueator.client.JiraClient : [JiraClient#uploadAttachment]
2020-02-13 19:37:31.719 DEBUG 29852 --- [nio-8080-exec-1] c.t.issueator.client.JiraClient : [JiraClient#uploadAttachment] Binary data
2020-02-13 19:37:31.719 DEBUG 29852 --- [nio-8080-exec-1] c.t.issueator.client.JiraClient : [JiraClient#uploadAttachment] ---> END HTTP (17-byte body)
get 404 - XSRF check failed
Comment From: almirus
List<Attachment> uploadAttachment(@RequestHeader(value="X-Atlassian-Token", defaultValue = "no-check") String XSRF,
@PathVariable String issueIdOrKey,
@RequestPart(name = "file") MultiValueMap<String, Object> file);
Comment From: weixsun
List<Attachment> uploadAttachment(@RequestHeader(value="X-Atlassian-Token", defaultValue = "no-check") String XSRF, @PathVariable String issueIdOrKey, @RequestPart(name = "file") MultiValueMap<String, Object> file);
The following code avoid to use @RequestHeader in method param.
@PostMapping(value = "/rest/api/2/issue/{issueIdOrKey}/attachments",
consumes = MULTIPART_FORM_DATA_VALUE,
produces = APPLICATION_JSON_VALUE,
headers = "X-Atlassian-Token=no-check")
List<Attachment> uploadAttachment(@PathVariable String issueIdOrKey,
@RequestPart(name = "file") MultiValueMap<String, Object> file);
Comment From: OlgaMaciaszek
Hi, @almirus what is the full reference of that @Header annotation that you are using? Can you try using org.springframework.web.bind.annotation.RequestHeader annotation passed as a method parameter instead (that should work)?
Comment From: almirus
hi! @chentging thanks, it is work perfect!
2020-04-15 22:45:52.453 DEBUG 28116 --- [nio-8080-exec-3] c.t.issueator.client.JiraClient : [JiraClient#uploadAttachment] ---> POST http://HOST:8080/rest/api/2/issue/10600/attachments HTTP/1.1
2020-04-15 22:45:52.453 DEBUG 28116 --- [nio-8080-exec-3] c.t.issueator.client.JiraClient : [JiraClient#uploadAttachment] Accept: application/json
2020-04-15 22:45:52.453 DEBUG 28116 --- [nio-8080-exec-3] c.t.issueator.client.JiraClient : [JiraClient#uploadAttachment] Authorization: Basic ZmVkb3I6IVEydzNlNHI=
2020-04-15 22:45:52.453 DEBUG 28116 --- [nio-8080-exec-3] c.t.issueator.client.JiraClient : [JiraClient#uploadAttachment] Content-Length: 121030
2020-04-15 22:45:52.453 DEBUG 28116 --- [nio-8080-exec-3] c.t.issueator.client.JiraClient : [JiraClient#uploadAttachment] Content-Type: multipart/form-data;charset=UTF-8;boundary=5QObbj3qcLebJ0lr910nMwzHJVp5D2MRFhxK
2020-04-15 22:45:52.453 DEBUG 28116 --- [nio-8080-exec-3] c.t.issueator.client.JiraClient : [JiraClient#uploadAttachment] X-Atlassian-Token: no-check
2020-04-15 22:45:52.456 DEBUG 28116 --- [nio-8080-exec-3] c.t.issueator.client.JiraClient : [JiraClient#uploadAttachment]
@OlgaMaciaszek please close issue