2014-03-01 1 views
1

이미지 (또는 모든 이진 데이터)를 프록시하려고 시도 할 때까지 잘 작동하는 프록시가 있습니다. 내 견적에 따라 아래 코드 일해야하지만 그렇지 않습니다. 분명히 바보 같은 일을하고 있지만 포럼과 apis를 통해 파고 들었습니다. 아직 정확한 접근 방법을 사용하지 않았습니다.NodeJS + 요청 모듈을 사용할 때 이미지가 제대로 프록시되지 않음

'프록시'의 'core'는 다음과 유사합니다.

function(req, res) { 
    ... 

    options = { 
     url: 'a url', 
     headers: { 
     'Authorization': auth 
     } 
    }; 

    request(options, 
     function(e, r, b){ 
     var encoding = (r.headers['content-type'].indexOf('image') === -1) ? 'utf8' : 'binary'; 

     res.writeHead(200, { 
      'Content-Length': r.headers['content-length'], 
      'Content-Type': r.headers['content-type'] 
     }); 

     if (encoding === 'binary') { 
      b = new Buffer(b); 
     } 

     res.end(b, encoding); 
     }); 
    } 

내가 여기 실종? 어떤 모든 도움에 미리

감사합니다!

답변

2

내 문제가 (같은 I 원래 생각) 응답하지,하지만 오히려 사실 그 요청 모듈은 기본적으로 유니 코드에 대한 응답 본문을 인코딩했습니다. di sabled (encoding: null)이면 응답 본문이 응답으로 쉽게 소비되는 버퍼로 변환됩니다.

options = { 
     url: url, 
     encoding: null, 
     headers: { 
     'Authorization': auth 
     } 
    }; 

    request(options, 
     function(e, r, b){ 
     var encoding = (r.headers['content-type'].indexOf('image') === -1) ? 'utf8' : 'binary'; 
     res.end(b, encoding); 
     }); 
관련 문제