2016-11-15 23 views
0

JavaScriptからExpress.JSへのキーと値のセットを含むjsonデータを投稿しようとしています。私は他の郵便で示唆されているようにコルスの使用を追加しました。またres.header("Access-Control-Allow-Origin", "*");も追加しました。
Chrome PostmanアプリからのPOSTリクエストをテストしたところ、正常に機能しました。しかし、私はExpress.JSのための私のコードは、コンソール出力
XMLHttpRequest cannot load http://localhost:8080/submit_project_request. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'null' is therefore not allowed access. The response had HTTP status code 400.Express.js post request "Origin nullが許可されていません"エラー

、Chromeブラウザを介してローカルテストWebページを介して要求を送信したとき:

var http = require("http"); 
var express = require("express"); 
var xmlbuilder = require("xmlbuilder"); 
var bodyParser = require("body-parser"); 
var cors = require("cors"); 

var app = express(); 
app.use(cors()); 
var port = process.env.PORT || 8080; 

app.use(bodyParser.urlencoded({ 
    extended: true 
})); 

app.use(bodyParser.json()); 

app.use(function (req, res, next) { 
    res.header("Access-Control-Allow-Origin", "*"); 
    res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept"); 
    next(); 
}); 

app.get('/submit_project_request', function (req, res) { 
    var client_org = req.parm("client_org"); 
}); 

app.post('/submit_project_request', function (req, res, next) { 
    res.header("Access-Control-Allow-Origin", "*"); 
    res.header("Access-Control-Allow-Headers", "X-Requested-With"); 
    next(); 
    console.log(req.body.client_org); 
    res.contentType("text"); 
    res.send("data received"); 
}); 

app.listen(8080); 

任意の改善を提案すること自由に感じなさい。

答えて

2

file://を使用してウェブページを開いているようです。サーバを使用してhtmlページを提供し、localhost:8000/yourpage.htmlのようなものを表示してください

また、次のミドルウェアは必要ありません(corsモジュールを設定したい場合は、 app.use(cors(options))は、利用可能なオプションhere)を参照してください。

app.use(function (req, res, next) { 
    res.header("Access-Control-Allow-Origin", "*"); 
    res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept"); 
    next(); 
}); 

また、あなたはあなたのsubmit_project_requestルートから次を削除することがあります。このようなnext()を呼び出す

res.header("Access-Control-Allow-Origin", "*"); 
    res.header("Access-Control-Allow-Headers", "X-Requested-With"); 
    next(); 

はお勧めしません。あなたのコードでは、本質的にここに404を送ることを意味します。あなたがそれを行うつもりなら、return next();

+0

こんにちはラッキーソン、返事ありがとうございます。私はhttp:// localhost:8080/webpage.htmlからWebページにアクセスしようとしましたが、サーバは "can not GET /webpage.html"というエラーの空白のページを返します。どのようにこれを修正するための任意のアイデア?ありがとう –

+0

あなたがあなたのサーバーをポート8080で実行していることと、 'webpage.html'のルートハンドラがあることを確認してください(HTMLの提供にnode.jsのようなものを使用している場合)。ページをサーバーにPHPのようなものを使用している場合は、プロジェクトフォルダのルートに「webpage.html」という名前のファイルがあることを確認してください。 –

+0

ありがとうございます。問題が解決しました :) –

関連する問題