2017-04-06 9 views
4

다음 코드를 사용하여 Box.com에서 파일을 다운로드하려고합니다.Box API 2.0을 사용하여 파일을 다운로드하면 302 대신 응답 200을 표시합니다.

<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이 표시됩니다.

enter image description here

내가 응답으로 200을 받고 있어요 왜 확실하지. API 호출을 통해 파일을 다운로드해야합니다. 내가 놓친 게 있니?

+2

A "200 OK"는 좋은 반응 코드입니다. 덤프를 보면'test.jpg '이 콘텐츠 유형'image/jpeg'와 콘텐츠 길이'12681'로 스트리밍 중이라고 요청한 이미지처럼 보입니다. 브라우저는 일반적으로 해당 응답을 처리하고 이미지 (또는 다운로드 제안)를 표시합니다. 이 서비스를 직접 호출하기 때문에 응답을 적절히 처리해야합니다. –

답변

2

@ Miguel-F의 의견과 관련하여 서핑을하고 Ben Nadel's post에서 해결책을 찾았습니다.

나는 ColdFusion에서 (기본적으로 리디렉션 속성이 TRUE이기 때문에) dl.boxcloud.com하기 위해 리디렉션을 따라 때문이다, 응답 200있어, 그리고 재 요청의 응답은 실제로 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> 

그리고 지금은 documentation에 따라 응답으로 302 found을 얻고있다. 이 응답으로

enter image description here

, 우리는 ResponseHeader에서 (이 코드는 이전 리디렉션 된) Location 키를 가지고 있습니다. 따라서 위치 URL을 사용하여 CFHEADER 및 CFCONTENT 태그를 사용하여 파일을 다운로드 할 수 있습니다.

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

+1

좋아요! 다행히도이 작업이 가능하고 솔루션을 문서화하기 위해 여기로 돌아 왔습니다. 가능한 경우 대답으로 표시해야합니다. –