2016-09-01 2 views
0

Я пытаюсь разработать простой API, используя Node.js, im, используя XMLHttpRequest на клиенте, и данные хорошо обслуживаются, но я не могу установите заголовок типа ответа в свой ответ.Использование NodeJS для обслуживания содержимого, но responseType всегда «"

Таким образом, тип ответа на объекте xhr на клиенте всегда получается: responseType:"".

Даже когда я установил:

res.writeHead(200, {'content-type':"application/javascript"}); 

Это случается как POST и GET ситуации.

- Мои server.js:

var https = require('https'), 
    options = { 
     key : fs.readFileSync('key.pem'), 
     cert : fs.readFileSync('cert.pem') 
    }, 
    server = https.createServer(options); 

server.on('request', function (req, res) { 
    switch(req.method){ 
     case "GET": 
      res.writeHead(200, { 
       'accept': '*/*', 
       'content-type': "application/javascript" 
      }); 
      res.end('console.log("API GET Received")'); 
      break; 
     case "POST": 
      res.writeHead(200, { 
       'content-type': "application/javascript" 
      }); 
      req.on("data", function(data){ 
       console.log(data.toString("utf8")); 
      }); 

      res.end('console.log("API POST received")'); 
      break; 
     case "PUT": 
      break; 
     case "DELETE": 
      break; 
    } 
    req.on('error', function(err) {console.log(err);}); 
    return; 
} 
server.listen(443); 

- Объект XHR авторизованы на клиенте:

... 
readyState:4 
response:'console.log("API POST received")' 
responseText:'console.log("API POST received")' 
responseType:"" //This should be: "application/javascript" 
... 

Кстати:

node -v:  v6.5.0 
npm --version: 3.10.6 

предложения?

Спасибо!

ответ

0

Возможно, я не понимаю проблему, но похоже, что программа не пишет никакого заголовка в случае POST.

case "POST": 
     res.writeHead(200, { 
     }); 

должен читать что-то вроде

case "POST": 
     res.writeHead(200, { 
      'content-type': "application/javascript" 
     }); 

(или, возможно, инициализировать его перед переключателем)

+0

Это была моя ошибка при вставке кода здесь извините ... Edited уже, спасибо! – LeandroP

0

Похоже, вы настраиваете заголовок только на запрос GET, а не POST.

Может ли это быть проблемой?

+0

Это была моя ошибка при вставке кода здесь извините ... Отредактировано уже, спасибо! – LeandroP

2

responseType описывает (и должен быть установлен вами) в JavaScript тип данных в response собственности: arraybuffer, blob, document, json или text. У вас есть текст здесь; если вы хотите, чтобы значение ответа интерпретировалось как ArrayBuffer или Blob вместо текста, вам необходимо установить свойство responseType, прежде чем отправлять запрос.

Ни в коем случае не является application/javascript действительным значением для объекта responseType. Какой тип значения JavaScript вы ожидали бы присутствовать в свойстве response в этом случае? Это уже строка.

Если вы просто хотите, чтобы прочитать заголовок в Content-Type ответа на клиенте, используйте getReponseHeader метод после завершения запроса:

var contentTypeHeader = xhr.getReponseHeader("Content-Type"); 
Смежные вопросы