現在、NodeJS + ExpressJSはクライアント/サーバーとして、バックエンドサーバーへのAPIリクエストを作成しています。私はAPIリクエストを行うと、私は次のエラーを取得:NodeJS + ExpressJS:プリフライトレスポンスでAccess Control-Allow-Headersで要求ヘッダーフィールドを使用できません
Request header field firstname is not allowed by Access-Control-Allow-Headers in preflight response.
を私はCORSを許可するすべてのものを試してみましたが、私はまだ同じエラーを取得しています。
問題になる可能性があり何var express = require('express');
var cors = require('cors');
var path = require('path');
var config = require('../webpack.config.js');
var webpack = require('webpack');
var webpackDevMiddleware = require('webpack-dev-middleware');
var webpackHotMiddleware = require('webpack-hot-middleware');
var app = express();
var compiler = webpack(config);
app.use(cors());
app.use(webpackDevMiddleware(compiler, {noInfo: true, publicPath: config.output.publicPath}));
app.use(webpackHotMiddleware(compiler));
app.use(express.static('./dist'));
app.use('/', function (req, res) {
res.header("Access-Control-Allow-Origin", "*");
res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");
res.sendFile(path.resolve('client/index.html'))
})
var port = 3000;
app.listen(port, function(error) {
if (error) throw error;
console.log("Express server listening on port", port);
});
:ここExpressJSクライアント - サーバーは次のように設定されているどのように私のNodeJS +でしょうか?現在有効な唯一の方法は、https://chrome.google.com/webstore/detail/allow-control-allow-origi/nlfbmbojpeacfghkpbjhddihlkkiljbi?hl=enをダウンロードして有効にすることです。エラーが発生せず、APIリクエストが成功するでしょう。
EDIT - どのように私はAPIリクエスト
logInUser(userCredentials) {
var userCredsBody = {
'firstname': `${userCredentials.username}`,
'password': `${userCredentials.password}`
}
var configuration = {
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify(userCredsBody)
}
return function(dispatch) {
fetch('https://serverapi.com:8080/userInfo', configuration)
.then(response => response.json())
.then(response => {
console.log('Successful and ', response)
})
.catch((error) => {
console.log("Error: ", error)
})
}
申し訳ありませんが、あなたは私と一緒に完全なコードを表示することができ追加しましたか?シーケンスが重要であることを認識しているので、適切な順序でそれらを設定していることを確認したい –
@JoKo私は編集してすべてのコードを含めます。ルートの前にsetupCORSを含める必要があります** – manuerumx
ちなみに、あなたのアプリのルートとレスポンスをより厳密に制御したいのでなければ、自分のメソッドを避けてCORSモジュールの設定をチェックするべきです。実装が簡単で外部の依存関係がないため、私の関数が好きです。 – manuerumx