У меня есть установочный API-шлюз с API, который возвращает JSON через интеграцию Lambda.
Когда я пытался сделать GET-вызов через браузер, я получил ошибки
ERR_CONTENT_DECODING_FAILED
в Chrome и NSURLErrorDomain:-1015
в Safari.
Когда я позвонил GET, используя curl
, я смог получить ответ.
При поиске, я обнаружил, что проблема с gzip. Оказалось, что браузеры отправляют заголовок, указывающий, что они принимают gzip, но не могут обработать ответ. Когда я попытался сделать команду curl, используя --compressed
, я получил похожую ошибку.
Чтобы решить эту проблему, я попытался включить «Шифрование содержимого включено» на шлюзе API с минимальным размером 0 байт. Это не решило проблему.
При попытке сделать вызов curl
с флагом -compressed
я передал заголовок 'Accept-Encoding' и установил его в ''. Это дало мне действительный ответ.
В конце концов, я использую AngularJS для выполнения HTTP-вызовов. Я попытался установить заголовок, как указано выше, но Angular не позволяет этого. (Выдает ошибку Refused to set unsafe header "Accept-Encoding"
)
Может кто-нибудь помочь мне понять, как я могу обойти эту проблему?