2016-11-02 4 views
3

저는 실제로 파일 업로드 및 일부 데이터가 포함 된 Angular webform을 개발하고 있습니다. 다음은 요청 헤더입니다BodyParser : 예기치 않은 토큰 -

POST /tests/add HTTP/1.1 
Host: localhost:3000 
Accept: application/json, text/plain, */* 
Accept-Encoding: gzip, deflate 
Content-Type: application/json;charset=utf-8 
Referer: http://localhost:8000/ 
Content-Length: 2033 

내가 요청이 방법 구축 :

var formData = new FormData(); 
formData.append('file', $scope.test.file); 
$http({ 
    method: 'POST', 
    url: backUrl + '/tests/add', 
    data: { 'file': $scope.file, 
      'token': 'test'}, 
    contentType: false, 
    processData: false, 
    transformRequest: function (data, headersGetter) { 
     var formData = new FormData(); 
     angular.forEach(data, function (value, key) { 
      formData.append(key, value); 
     }); 
     var headers = headersGetter(); 
     delete headers['Content-Type']; 
     return formData; 
    } 

를하지만 항상이 오류와 함께 400 잘못된 요청을 반환 :

Unexpected token - 
400 

SyntaxError: Unexpected token - 
    at parse (/home/me/projects/www/node_modules/body-parser/lib/types/json.js:83:15) 
    at /home/me/projects/www/node_modules/body-parser/lib/read.js:116:18 
    at invokeCallback (/home/me/projects/www/node_modules/raw-body/index.js:262:16) 
    at done (/home/me/projects/www/node_modules/raw-body/index.js:251:7) 
    at IncomingMessage.onEnd (/home/me/projects/www/node_modules/raw-body/index.js:307:7) 
    at emitNone (events.js:86:13) 
    at IncomingMessage.emit (events.js:185:7) 
    at endReadableNT (_stream_readable.js:974:12) 
    at _combinedTickCallback (internal/process/next_tick.js:74:11) 
    at process._tickCallback (internal/process/next_tick.js:98:9) 

이가이다 내 백엔드에있는 bodyParser에 대한 참조 만 :

내가 뭘 잘못하고 있니?

답변

4

JSON을 보내시겠습니까?

대개 bodyParser.json()에서 오류가 발생하는 잘못된 JSON을 사용하고있는 것 같습니다.

유효한 JSON을 사용하고 있는지 확인하십시오. 미들웨어를 위해 bodyParser.json과 bodyParser.raw를 교체 할 수도 있습니다.

+0

내가 무슨 뜻인지 모르겠다. 요청한 wjat 인 경우 JSON 파일을 보내지 않을 것이다. – Papotitu

+0

좋아요 .json에서 .raw로 바꿨으므로 오류가 더 이상 발생하지 않습니다. 그러나 req.body는 항상 비어 있습니다. 그래서 bodyparser.raw 뒤에 요청 param에 어떻게 접근합니까? – Papotitu

+0

미안하지만, 당신이 보내는 것을 확인할 수 있도록 사용하고 있다고 말하고있었습니다. 머리글과 본문에서 실제로 보내고있는 내용을 확인하여 JSON을 제대로 보내고 있는지 확인하는 것이 좋습니다. 하지만 여기 bodyparser.raw에 대한 goog 링크가 있습니다 : http://stackoverflow.com/questions/18710225/node-js-get-raw-request-body-using-express – defaultcheckbox