2016-12-15 4 views
0

OneDrive API를 사용하여 파일 내용을 가져 오는 데 이해할 수없는 문제가 있습니다.Range 헤더를 사용하여 파일 내용을 가져 오는 경우 부분 콘텐츠가 반환되고 후속 요청이 데이터를 반환하지 않습니다.

우리는 Range 헤더와 함께 파일 내용을 요청하면 :

GET /blahblah/foobar.docx HTTP/1.1 
Host: qw122q-ch3301.files.1drv.com 
Accept: */* 
Accept-Encoding: deflate, gzip 
Range: bytes=0-77270 

원 드라이브 반환 :

HTTP/1.1 206 Partial Content 
Cache-Control: no-cache 
Content-Length: 18325 

우리는 파일 크기가 웹 인터페이스를 사용하여 원 드라이브 서버에서 올바른지 확인. 일반적으로 OneDrive는 요청 된 전체 콘텐츠를 반환하지만 지난 주부터는 부분 콘텐츠를 반환합니다. 하지만 다른 API 호출로 나머지 부품을 얻을 수 있다면 괜찮습니다.

그러나 우리는 Range 헤더와 다른 요청을 보낼 때 :

Range: bytes=18325-77270 

원 드라이브 반환하지 데이터 :

HTTP/1.1 206 Partial Content 
Control: no-cache 
Content-Length: 0 

사람이이 문제를 경험 한 적이 있습니까? OneDrive 개발자 문서에서이 문제점에 대한 단서를 찾을 수 없습니다. 이것에 대해 좀 더 밝혀주세요.

+0

이것은 분명히 예기치 않은 동작입니다.이 문제를 다른 파일 형식으로 재현 할 수 있습니까? 아니면 문서 만 사용할 수 있습니까? – Brad

+0

@ 브래드 나는 그것이 일어난 이유를 발견했다고 생각합니다. 이 문제는 온라인 버전의 Office를 사용하여 Office 파일을 수정 한 후에 발생합니다. 수정 후 파일 크기가 변경되었지만 OneDrive API는 원래 파일 크기를 반환합니다. – Seunghoon

+0

흥미 롭습니다. 조사에 감사드립니다!이 동작을보고있는 문서 중 하나의 ID를 공유하고 싶습니까? – Brad

답변

0

사실 나는 이론을 가지고 있으므로 대답을 시도 할 것입니다. 이 혼란스러운 행동을 초래하는 두 가지 문제가 실제로 있으므로 개별적으로 해결해 보겠습니다.

보고 파일 크기는이 this GitHub issue으로 추적하는 시스템의 불행한 특질 콘텐츠 크기를

일치하지 않습니다. Ryan은 더 자세히 here을 설명합니다. 실제 파일 크기 이외의 범위는 우리가 "정상"에 대한처럼 우리가 416 Requested Range Not Satisfiable와 함께 실패한다 요청하면 워드 문서의

범위 다운로드가 제대로 시켰음 범위

을 처리하지 않는 파일. 그러나 그것은 분명히 작동하지 않습니다. 당신은 계속 터져 거기에 뭔가 결과의 Content-Range에서 볼 수 있습니다
Range Requested: bytes=15-
Content-Range Response: bytes=15-14/15

FileSize: 15 bytesContent-Range의 가치는 분명히 이해되지 않는다.

함께이 두 가지 문제는 당신이보고있는 이상한 행동으로 이어질 것입니다. 우리는 첫 번째 해결에 가깝지만 두 번째는 알려지지 않았기 때문에 (적어도 나에게는) 알려지지 않았습니다. 그래서 추적하기 위해 new GitHub issue을 열었습니다.