coldfusion – 通过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 as response.并重定向到dl.boxcloud.com进行下载.但我得到200作为回应.

《coldfusion – 通过Box API 2.0下载文件,给出200作为响应,而不是找到302》

不知道为什么我得到200作为回应.我需要通过API调用下载文件.我错过了什么吗?

最佳答案 关于@ Miguel-F的评论,我已经浏览并找到了 Ben Nadel’s post的解决方案.

我有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作为响应按照documentation.

《coldfusion – 通过Box API 2.0下载文件,给出200作为响应,而不是找到302》

通过此响应,我们在ResponseHeader中具有Location键(之前代码被重定向).因此,通过使用位置URL,我们可以使用CFHEADER和CFCONTENT标记下载文件.

参考:https://www.bennadel.com/blog/934-ask-ben-handling-redirects-with-coldfusion-cfhttp.htm

点赞