私はNode.jsで私のサーバを準備しました(Chrome Postmanでテスト済みで、すべて正常です)。 Ubuntu 16.04 Server仮想マシンにインストールされ、ホストマシン(win7)からすべてをテストします。その後、仮想マシンにIonic2フレームワークを追加してフロントエンドの開発を開始しましたが、リクエストPOSTを送信する際に問題があります。 Ionic2:POST要求が動作しない
は、私は次のコードでprovaider作成:import { Injectable } from '@angular/core';
import { Http, Headers } from '@angular/http';
import 'rxjs/add/operator/map';
@Injectable()
export class MyProvider1 {
data: any;
constructor(public http: Http) {
this.data = null;
}
login(id,pwd){
let headers = new Headers();
headers.append('Content-Type', 'application/json');
this.http.post('http://localhost:8080/',
JSON.stringify({
username: id ,
password: pwd
}), {headers: headers})
.subscribe(res => {
console.log(res.json());
});
}
}
それは作業しなければならないのが、ログイン機能が呼び出されたときに、私のNode.jsサーバは奇妙な要求をログに記録します。
OPTION/200 0.348ms -13
POST
の代わりにリクエスト。また、私のホストChromeブラウザにコンソールは、次の失敗を示しています
のXMLHttpRequestがhttp://localhost:8080/をロードすることはできません。 プリフライト要求に応答してアクセス制御チェックを通過しません。いいえ 要求された リソースに 'Access-Control-Allow-Origin'ヘッダーが存在します。したがって、オリジン 'http://localhost:8100'は許可されません。
ただ裁判のために私は{headers: headers}
を取り除き、http.post
になった:モルガンは私のNode.jsでPOST
要求をログに記録しますが、私はconsole.log(req.body)
をすればreq.bodyは(空である。このように
this.http.post('http://localhost:8080/',
JSON.stringify({
username: id ,
password: pwd
}))
.subscribe(res => {
console.log(res.json());
});
出力は{}
になります)。
念のために、私は私のサーバーのNode.jsのコードの以下の部分で投稿:
...
router.route('/')
.get(function(req,res){
res.end('Welcome');
})
.post(function(req,res){
UsersManager.login(req.body.username,req.body.password,function(err,user){
if(err) throw err;
if(!user){
res.json({
success: false,
message: Const.notificationTokenAccessNOK
});
}else{
var token = TokenManager.createToken(user);
res.json({
success: true,
message: Const.notificationTokenAccessOK,
token: token
});
}
});
});
module.exports = router;
はい!それはCORSの問題であり、あなたの指示に従ってプロキシを設定することによって動作します。どうもありがとう – pittuzzo