Возникают проблемы с возвратом результата запроса запросов к API из-за заголовков - PullRequest
0 голосов
/ 11 июня 2019

Я делаю API, который вызывает другой API.Все работает очень хорошо, пока я не добавлю заголовки к возвращаемому типу int в виде

response.headers.items()

, возвращение выглядит так, когда оно работает:

res_dict = response.json()
return (jsonify(res_dict), response.status_code)

и так, когда это не такt:

res_dict = response.json()
return (jsonify(res_dict), response.status_code, response.headers.items()) 

Когда я печатаю фактический response.headers.items (), я получаю следующее

ItemsView({
   'Content-Type':'application/json',
   'x-correlation-id':'cd28f05e-df35-49bd-a17d-868c185fd640',
   'badi':'Routing: us-east-1=>us-east-1; Version: 4001; Host: c6c8;',
   'Cache-Control':'private',
   'Access-Control-Expose-Headers':'X-RateLimit-Remaining, X-RateLimit-Limit, X-RateLimit-Reset',
   'x-frame-options':'SAMEORIGIN',
   'Access-Control-Allow-Origin':'*',
   'x-content-type-options':'nosniff, nosniff',
   'Content-Encoding':'gzip',
   'X-RateLimit-Limit':'40',
   'X-RateLimit-Remaining':'39',
   'X-RateLimit-Reset':'2',
   'Server':'no-name-at-all',
   'X-XSS-Protection':'1; mode=block',
   'Content-Length':'108',
   'Date':'Tue, 11 Jun 2019 19:03:00 GMT',
   'Connection':'keep-alive',
   'Vary':'Accept-Encoding',
   'Set-Cookie':'pipe-last-active=1560279780260;path=/;domain=.pipedrive.com;expires=0',
   'Server-Timing':'cdn-cache; desc=MISS, edge; dur=97, origin; dur=37',
   'Strict-Transport-Security':'max-age=31536000 ; includeSubDomains'
})

И когда я пытаюсь получить URL-адрес в Firefox их клиенту этовозвращает ошибку, подобную этой:

Content Encoding Error

The page you are trying to view cannot be shown because it uses an invalid or unsupported form of compression.

    Please contact the website owners to inform them of this problem.

Любая помощь, устраняющая эту проблему, высоко ценится.Заранее спасибо.

1 Ответ

0 голосов
/ 12 июня 2019

Благодаря dylanj.nz мне наконец удалось решить эту проблему, и это было очень просто.Заголовок Content-Encoding был установлен на gzip, поэтому мне пришлось изменить кодировку ответа.в конце код возврата ответа будет выглядеть следующим образом.

res_gzip = gzip.compress(response.content)
return (res_gzip, response.status_code, response.headers.items())

конечно, используя библиотеку gzip в python, которая включена в интерпретатор, кажется.

В любом случае, большое спасибобыла большая помощь

...