Uploaded image for project: 'Spring Framework'
  1. Spring Framework
  2. SPR-15952

HttpEntityMethodProcessor discards headers

    Details

    • Last commented by a User:
      true

      Description

      When upgrading to spring webmvc from version 4.2.9 to version 4.3.9, we have detected an issue when adding cookies to the response entity from a controller.

      In the HttpEntityMethodProcessor class, when handling the return value, if the ServletServerHttpResponse contains already the header that is added to the entityHeaders object, it won't be added to the outputHeaders.

      This scenario happens when for example the JSESSIONID cookie is added to the response header before calling a controller and then when the controller tries to add an extra cookie it is ignored due to the described behaviour.

      By comparing versions 4.2.x and 4.3.x:

      version 4.2.x

      public void handleReturnValue(...) {
        ...
        HttpHeaders entityHeaders = responseEntity.getHeaders();
        if (!entityHeaders.isEmpty()) {
          outputMessage.getHeaders().putAll(entityHeaders);
        }
        ...
      }
      

      version 4.3.x

      public void handleReturnValue(...) {
        ...
        if (!entityHeaders.isEmpty()) {
          for (Map.Entry<String, List<String>> entry : entityHeaders.entrySet()) {
            if (!outputHeaders.containsKey(entry.getKey())) {
              outputHeaders.put(entry.getKey(), entry.getValue());
            }
          }
        }
        ...
      }
      

      I set the bug level to critical as is blocking us to upgrade from 4.2 to 4.3, but you can decide which level suits you better.

      Kind regards,

      NĂ©stor

        Attachments

          Issue Links

            Activity

              People

              • Assignee:
                juergen.hoeller Juergen Hoeller
                Reporter:
                nestabur Nestor Tarin Burriel
                Last updater:
                Spring Issuemaster
              • Votes:
                0 Vote for this issue
                Watchers:
                2 Start watching this issue

                Dates

                • Created:
                  Updated:
                  Resolved:
                  Days since last comment:
                  26 weeks ago