docs: def get_wsgi_headers(self, environ):
          """This is automatically called right before the response is started
          and returns headers modified for the given environment.  It returns a
          copy of the headers from the response with some modifications applied
          if necessary.
  
          For example the location header (if present) is joined with the root
          URL of the environment.  Also the content length is automatically set
          to zero here for certain status codes.
  
          .. versionchanged:: 0.6
             Previously that function was called `fix_headers` and modified
             the response object in place.  Also since 0.6, IRIs in location
             and content-location headers are handled properly.
  
             Also starting with 0.6, Werkzeug will attempt to set the content
             length if it is able to figure it out on its own.  This is the
             case if all the strings in the response iterable are already
             encoded and the iterable is buffered.
  
          :param environ: the WSGI environment of the request.
          :return: returns a new :class:`~werkzeug.datastructures.Headers`
                   object.
          """
          headers = Headers(self.headers)
          location = None
          content_location = None
          content_length = None
          status = self.status_code
  
          # iterate over the headers to find all values in one go.  Because
          # get_wsgi_headers is used each response that gives us a tiny
          # speedup.
          for key, value in headers:
              ikey = key.lower()
              if ikey == u"location":
                  location = value
              elif ikey == u"content-location":
                  content_location = value
              elif ikey == u"content-length":
                  content_length = value
  
          # make sure the location header is an absolute URL
          if location is not None:
              old_location = location
              if isinstance(location, text_type):
                  # Safe conversion is necessary here as we might redirect
                  # to a broken URI scheme (for instance itms-services).
                  location = iri_to_uri(location, safe_conversion=True)
  
              if self.autocorrect_location_header:
                  current_url = get_current_url(environ, strip_querystring=True)
                  if isinstance(current_url, text_type):
                      current_url = iri_to_uri(current_url)
                  location = url_join(current_url, location)
              if location != old_location:
                  headers["Location"] = location
  
          # make sure the content location is a URL
          if content_location is not None and isinstance(content_location, text_type):
              headers["Content-Location"] = iri_to_uri(content_location)
  
          if 100 <= status < 200 or status == 204:
              # Per section 3.3.2 of RFC 7230, "a server MUST NOT send a
              # Content-Length header field in any response with a status
              # code of 1xx (Informational) or 204 (No Content)."
              headers.remove("Content-Length")
          elif status == 304:
              remove_entity_headers(headers)
  
          # if we can determine the content length automatically, we
          # should try to do that.  But only if this does not involve
          # flattening the iterator or encoding of unicode strings in
          # the response.  We however should not do that if we have a 304
          # response.
          if (
              self.automatically_set_content_length
              and self.is_sequence
              and content_length is None
              and status not in (204, 304)
              and not (100 <= status < 200)
          ):
              try:
                  content_length = sum(len(to_bytes(x, "ascii")) for x in self.response)
              except UnicodeError:
                  # aha, something non-bytestringy in there, too bad, we
                  # can't safely figure out the length of the response.
                  pass
              else:
                  headers["Content-Length"] = str(content_length)
  
          return headers