ExpressでCORSポリシーを適切に管理するにはどうすればいいですか? 質問する

ExpressでCORSポリシーを適切に管理するにはどうすればいいですか? 質問する

どこからでもアクセスできるようにしようとしています。

アプリミドルウェアの使用を試みました:

app.use(function (req, res, next) {
  res.setHeader("Access-Control-Allow-Origin", "*");
  res.setHeader('Access-Control-Allow-Methods', '*');
  res.setHeader("Access-Control-Allow-Headers", "*");
  next();
});

以下のルートで使用してみました:

app.post('/login',function(req,res){
var login   = req.body;
var sess    = req.session;

if (!login.email && !login.pwd){    
    return res.status(401);
}
res.header("Access-Control-Allow-Origin", '*');
res.header("Access-Control-Allow-Headers", '*');
.... more code here

どちらも機能しません。次のエラーが繰り返し発生します: 「プリフライト要求への応答がアクセス制御チェックに合格しません: 要求されたリソースに 'Access-Control-Allow-Origin' ヘッダーが存在しません。」

サーバーのさらに下では、別のルートに対して同様のコードを使用します。これは次のように機能します。

app.post('/questar',function(req,res){
//allow xhr post from retireup domains
var cors = {
    origin: "https://www.website.com";
};
res.header("Access-Control-Allow-Origin", cors.origin);
res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");
res.type('application/json');

コードの違いはわかりませんが、1 つのセットだけが機能します。理由がわかりませんか? これはそれほど複雑ではない問題のように思えます。ありがとうございます

ベストアンサー1

「cors」ミドルウェアを適用した後、「localhost:」の前に「http://」が渡される必要があります。Axios によって送信される URL では、次のようになります。

axios.get("http://localhost:8080/api/getData")
  .then(function (response) {
    this.items = response.data;
  })
  .catch(function (error) {
    console.log(error)
  });

おすすめ記事