2017-11-26 3 views
2

나는 모든 기본 요청 헤더와 함께 모든 요청을 보내고 요청마다 body/url을 자동으로 암호화하는 HttpInterceptor를 만들었고 헤더를 검사하고 패킷을 해독하는 백엔드 용 미들웨어를 만든 HttpInterceptor를 만들었습니다 필요한 경우 .. 이제 응답 미들웨어에 문제가 있습니다. 일부 요청에 대해서만 암호화 된 본문으로 응답을 보내려고하기 때문입니다.ExpressJS 응답 미들웨어

app.use((req,res,next)=>{ 

    if(req.headers['x-data-encoded'] && (req.headers['x-server'] == "HP")){ 

     res.append('X-Encoded-Data', true); 

     var nsp = res.send; 

     res.send = function(data){ 
      var body = Crypto.encodeData(data); // Result a string of letters and numbers 
      nsp.apply(this, body); 
     } 

    } 

    next(); 
}); 

잡은 예외 : 형식 오류 : 나는 send 메소드가 객체를 대기하고 문자열을 수신하기 때문에 해당 오류가 나타납니다 생각이 아닌 객체

+0

어디에서이 오류가 발생합니까? 그것은 당신이 보여주는 코드에없는 것처럼 보입니다. –

+0

줄을 표시하지 않지만 'nsp'및 'res.send'함수에 주석을 달면 제대로 작동합니다. –

답변

1

호출 CreateListFromArrayLike. 객체를 수동으로 바디에 할당하면이 오류는 사라지거나 다른 객체로 변경되어야합니다.

게다가, apply의 두 번째 매개 변수는 배열이어야합니다.

희망 하시겠습니까?

+0

'nsp.apply (this, {packet : body}); '오류를 발생시키지 않습니다. 요청에 사용할 수있는 응답 데이터가 없습니다. –

+0

apply의 두 번째 매개 변수는 배열이어야합니다. 아마도 그 때문일 것입니다. –

+1

대단히 감사합니다! 모듈이 잘 작동합니다. '.apply (this, [body]);' –

관련 문제