Загрузка файла через 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