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

workaround (ugly code)

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

workaround (ugly code)

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