0

そのため、クロスドメインリクエストを許可するアプリを設定しています。この投稿からさまざまな方法を使用していますnode.js の Express.js フレームワークでクロスオリジン リソース共有 (CORS) を有効にする方法

しかし、私は整理できないように見えるエラーを受け取ります。これが私が使用しているものです(概説した約3つの方法を試したわけではありません-それらはすべて同じエラーを出します)。

 app.use(function(req, res, next){
  res.header('Access-Control-Allow-Origin', '*');
  res.header('Access-Control-Allow-Headers', 'Content-Type');
  res.header('Access-Control-Allow-Methods', 'PUT, GET, POST, DELETE, OPTIONS');
  res.header('Access-Control-Allow-Headers', 'X-Requested-With');
  next();
})
.options('*', function(req, res, next){
    res.end();
});

これでもエラーが発生します:

XMLHttpRequest cannot load http://localhost:3000/blah. Request header field Content-Type is not allowed by Access-Control-Allow-Headers. 

一番上のコードをコメントアウトすると、リクエストがそのコードによって適切に処理されていることを示すように思われる許可されていないエラーが表示されます。また、奇妙な文字を貼り付けていないことを確認するために、コンテンツ タイプ リクエストを再入力しました。手がかりはありますか?

4

2 に答える 2

4

2 つのAccess-Control-Allow-Headersヘッダーがあります。最後の方が勝ちます。

おそらくAccess-Control-Allow-Headers、コンマ区切りのリストである値を持つ 1 つのヘッダーが必要です。

于 2013-04-08T01:37:01.460 に答える
0

cors プラグインを使用すると、そのように簡単になり、res.header を手動で設定する必要がなくなります

ここでプラグインを入手してください: https://github.com/troygoode/node-cors

REST API コードの例:

'use strict';

var express = require('express'),
    cors = require('cors'),
    port = process.env.PORT || 3000,
    connect = require('connect'),
    app = express();

app.use(connect.bodyParser()); //For POST method JSON form data

//GET method
app.get('/books', cors(), function(req, res){
      //send JSON etc
      res.json({});
});

//POST method
app.post('/books/', cors(), function(req, res){                          
    var book = req.body;

    //insert book to DB etc

    //send result back to client
    res.send(book);
});

//start server on port 3000
if(!module.parent){
  app.listen(port, function(){
    console.log('Express server listening on port ' + port + '.');
  });
}

これで、任意の場所、ポートなどから REST API にアクセスできるようになりました。

于 2014-05-02T01:53:11.067 に答える