Загрузка файла через Box API 2.0 дает 200 в качестве ответа вместо 302 найден

Я пытаюсь загрузить файл с Box.com через API, используя следующий код.

<cfhttp url="https://api.box.com/2.0/files/(FILE_ID)/content/" method="GET" redirect="true" >
<cfhttpparam type="header" name="Authorization" value="Bearer (DEVELOPER_TOKEN)">
</cfhttp>

Согласно документации он должен вернуться 302 Found как ответ. И перенаправляет на dl.boxcloud.com для скачивания. Но я получаю 200 как ответ.

введите описание изображения здесь

Не уверен, почему я получаю 200 в качестве ответа. Мне нужно скачать файл через вызов API. Я что-то пропустил?

1 ответ

Решение

Что касается комментария @Miguel-F, я занимался серфингом и нашел решение из поста Бена Наделя.

В ответ я получил 200, потому что ColdFusion следовал за перенаправлением на dl.boxcloud.com (поскольку по умолчанию атрибут REDIRECT равен TRUE), а ответ на перенаправленный запрос равен 200.

На самом деле мы должны остановить перенаправление, установив атрибут REDIRECT в FALSE, Так что Coldfusion вернет фактический ответ на вызывающий код.

Поэтому я установил атрибут REDIRECT в FALSE,

<cfhttp url="https://api.box.com/2.0/files/(FILE_ID)/content/" method="GET" redirect="false" >
<cfhttpparam type="header" name="Authorization" value="Bearer (DEVELOPER_TOKEN)">
</cfhttp>

И теперь я получаю 302 found как ответ согласно документации.

С этим ответом мы имеем Location ключ (в котором код был перенаправлен ранее) в ResponseHeader. Таким образом, используя URL-адрес местоположения, мы можем загрузить файл, используя теги CFHEADER и CFCONTENT.

Ссылка: https://www.bennadel.com/blog/934-ask-ben-handling-redirects-with-coldfusion-cfhttp.htm

Другие вопросы по тегам