我想發佈一些數據節點服務器,但我有一個問題:角http.post作爲選項方法請求
postEmployeeForm(employee: Employee):Observable<any> {
let body = JSON.stringify(employee);
let headers = new Headers({ 'Content-Type': 'application/json' });
let options = new RequestOptions({ headers: headers });
return this.http.post('http://localhost:3100/postemployee', body, options)
.map(this.extractData)
.catch(this.handleError);
}
這是我的POST請求通過網絡選項卡我認爲這是選項方法,而在服務器上我期待一個post請求。
如果我省略http.post中的選項,那麼我會在服務器上獲取發佈請求,但隨後出現意外內容類型的錯誤。
postEmployeeForm(employee: Employee):Observable<any> {
let body = JSON.stringify(employee);
return this.http.post('http://localhost:3100/postemployee', body)
.map(this.extractData)
.catch(this.handleError);
}
這是預期的行爲還是我在做一些錯誤的帖子。我在官方角度指南上發現了這個代碼:server-communication 如何處理這種情況,我需要在客戶端更改某些內容還是應該在服務器端處理?
編輯:
這是我的服務器代碼:
var http = require('http');
var formidable = require("formidable");
var util = require('util');
var server = http.createServer(function(req, res) {
res.setHeader('Access-Control-Allow-Origin','*');
res.setHeader('Access-Control-Allow-Headers','Origin, X-Requested-With, Content-Type, Accept');
if(req.method.toLowerCase() == 'post') {
console.log("Get request!");
processForm(req,res);
return;
}
});
function processForm(req,res) {
var form = new formidable.IncomingForm();
form.parse(req, function(err, fields) {
res.writeHead(200, {
'content-type': 'application/json'
});
res.end(util.inspect({
fields: fields
}));
console.log('posted fields:\n');
console.log(util.inspect({
fields: fields
}));
});
}
var port = 3100;
server.listen(port,'localhost');
console.log("server listening on port " + port);
什麼是頭被設置與'{標題:標題}'? –
@GrishaLevit {'Content-Type':'application/json'} – freshbm
您的代碼的第一塊問題是什麼?它不啓動一個發佈請求? –