0

私はこのサンプルアプリに従っています: https://github.com/relayjs/relay-starter-kit

Relay.injectNetworkLayer(
  new Relay.DefaultNetworkLayer('http://localhost:8080/graphql')
);

カスタムURLを使用すると、次のエラーが発生します

オプションhttp://localhost:8080/graphql
net::ERR_EMPTY_RESPONSEself.fetch @ relay.js:21558Promise @
app.js:3335self.fetch @ relay.js:21508sendTimedRequest @
relay.js:20131module.exports @ relay.js:20186tryCallTwo @
relay.js:3762doResolve @relay.js:3879Promise @
relay.js:3782fetchWithRetries @relay.js:20122_sendQuery @
relay.js:13042(匿名関数) @relay.js:12976sendQueries @
relay.js:12975sendQueries @relay.js :3502processQueue @
relay.js:17591(匿名関数) @ relay.js:17582tryCallOne @
relay.js:3754(匿名関数) @ relay.js:3820flush @ relay.js:9457
relay.js:21558 OPTIONS http://ローカルホスト:8080/graphql
net::ERR_EMPTY_RESPONSEself.fetch @ relay.js:21558Promise @
app.js:3335self.fetch @ relay.js:21508sendTimedRequest @
relay.js:20131 relay.js:21558 OPTIONS http://localhost:8080/graphql
net:: ERR_EMPTY_RESPONSEself.fetch @ relay.js:21558Promise @ app.js:3335self.fetch @ relay.js: 21508sendTimedRequest
@
relay.js:20131 relay.js:7449 relay.js:3754(無名関数) @ relay.js:3820flush @ relay.js:9457

4

1 に答える 1

2

あなたのアプリケーションはポート 3000 で実行されていると思います。サーバー側でそのようなクロスオリジン要求を有効にせずに、client=>server 要求を別のドメイン/ポートの組み合わせにしようとすると、ブラウザーはデフォルトのCORSを使用します。リクエストをブロックするポリシー。

次のように、サーバー側ですべてのオリジンからのリクエストを有効にできます。

import cors from 'cors';

var graphQLServer = express();
graphQLServer.use(cors());
/* ... */

より細かい制御については、 cors docsを確認してください。

npm install --save corsサーバーコードがどこにあっても、必ず実行してください。

于 2015-09-10T17:42:24.210 に答える