Django ответ с дополнительными заголовками возвращает 500 - PullRequest
1 голос
/ 17 июня 2020

Нашему приложению, разработанному в Django, необходимо передавать некоторые дополнительные заголовки ответа в определенных запросах.

Мы делаем это следующим образом:


    def update(self, request, *args, **kwargs):
       original_response = Response(status=status.HTTP_204_NO_CONTENT)
       original_response['X-Status-Type'] = 'info'
       original_response['X-Status-Message'] = 'Il cliente è stato avvertito'
       return original_response

В нашем методе. Однако, хотя это работает в нашей локальной настройке, на heroku это генерирует ошибку 500, которую мы не можем понять.

Я создал простой метод обновления следующим образом:

    def update(self, request, *args, **kwargs):

        try:
            original_response = Response(status=status.HTTP_204_NO_CONTENT)
            original_response['X-Status-Type'] = 'info'
            original_response['X-Status-Message'] = 'Il cliente è stato avvertito'
            logger.info(original_response)
            return original_response
        except Exception as e:
            logger.error(e)
            logger.info('INSIDE CATCH')
            return Response(status=status.HTTP_204_NO_CONTENT)

With в этом случае вызов PATCH возвращает 500 (внутренняя ошибка сервера ...). Вместо этого с помощью этого метода:

    def update(self, request, *args, **kwargs):

        try:
            original_response = Response(status=status.HTTP_204_NO_CONTENT)
            logger.info(original_response)
            return original_response
        except Exception as e:
            logger.error(e)
            logger.info('INSIDE CATCH')
            return Response(status=status.HTTP_204_NO_CONTENT)

в результате я получил 204.

Кажется, что ответ задерживается на маршрутизаторе heroku, и 500 генерируется там, что может быть замеченным этим не- django ответом даже в режиме отладки:

HTTP/1.1 500 Internal Server Error
Server: Cowboy
Date: Thu, 18 Jun 2020 13:07:55 GMT
Connection: close
Content-Type: text/html
Content-Length: 141
Via: 1.1 vegur

<html>
  <head>
    <title>Internal Server Error</title>
  </head>
  <body>
    <h1><p>Internal Server Error</p></h1>

  </body>
</html>

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...