47

restify モジュールで作成された REST API があり、クロスオリジンのリソース共有を許可したいと考えています。それを行う最良の方法は何ですか?

4

14 に答える 14

66

クロスオリジンヘッダーを設定するには、サーバーを設定する必要があります。組み込みのuse関数があるかどうかわからないので、自分で書きました。

server.use(
  function crossOrigin(req,res,next){
    res.header("Access-Control-Allow-Origin", "*");
    res.header("Access-Control-Allow-Headers", "X-Requested-With");
    return next();
  }
);

私はこのチュートリアルからこれを見つけました。http://backbonetutorials.com/nodejs-restify-mongodb-mongoose/

于 2013-01-24T17:09:40.637 に答える
64

Restify の最新バージョンには、CORS を処理するためのプラグインが用意されています。

したがって、次のように使用できます。

server.use(restify.CORS({

  // Defaults to ['*'].
  origins: ['https://foo.com', 'http://bar.com', 'http://baz.com:8081'], 

  // Defaults to false.
  credentials: true,

  // Sets expose-headers.
  headers: ['x-foo']   

}));
于 2013-03-06T02:49:57.083 に答える
3

私は自分の restify ベースアプリで次のようにします:

//setup cors
restify.CORS.ALLOW_HEADERS.push('accept');
restify.CORS.ALLOW_HEADERS.push('sid');
restify.CORS.ALLOW_HEADERS.push('lang');
restify.CORS.ALLOW_HEADERS.push('origin');
restify.CORS.ALLOW_HEADERS.push('withcredentials');
restify.CORS.ALLOW_HEADERS.push('x-requested-with');
server.use(restify.CORS());

restify.CORS.ALLOW_HEADERS.push メソッドを使用して、必要なヘッダーを最初に restify にプッシュし、次に CORS ミドルウェアを使用して CORS 関数を起動する必要があります。

于 2013-10-06T23:15:04.913 に答える
2

私の場合はこれで十分でした:

var server = restify.createServer();
server.use(restify.fullResponse());
server.get('/foo',  respond(req, res, next) {
   res.send('bar');
   next();
});

またserver.use(restify.CORS()); 、機能するためには、呼び出しが呼び出しにserver.use()先行する必要があるserver.get()ようです。

于 2013-05-28T17:43:47.650 に答える
0

Restify 7.2.3 バージョンを使用していますが、このコードは非常にうまく機能しました。restify-cors-middleware プラグインをインストールする必要があります。

const corsMiddleware = require('restify-cors-middleware')

const cors = corsMiddleware({
    preflightMaxAge: 5, //Optional
    origins: ['http://ronnie.botsnbytes.com', 'http://web.myapp.com'],
    allowHeaders: ['API-Token'],
    exposeHeaders: ['API-Token-Expiry']
})

server.pre(cors.preflight)
server.use(cors.actual)
于 2019-03-20T01:23:39.137 に答える