web-dev-qa-db-ja.com

GETHTTPメソッドの代わりにOPTIONSを送信するApolloクライアント

Apolloクライアントライブラリが意図したとおりに機能しないため、理解に問題があります。 GETHTTPメソッドを送信する代わりに、OPTIONS取得時にのみ[〜#〜] get [〜#〜]を使用しましたがHTTPメソッドGraphQLサーバーからのデータ。

_const client = new ApolloClient({
    link: ApolloLink.from([
        new MeteorAccountsLink(),
        new HttpLink({
            uri: 'https://selo-comments.herokuapp.com/graphql',
            useGETForQueries: true
        })
    ]),
    cache: new InMemoryCache()
});
_

ブラウザからのコンソールログ:OPTIONS https://selo-comments.herokuapp.com/graphql?query=%7B%0A%20%20comments(id%3A%20%22TFpQmhrDxQqHk2ryy%22)%20%7B%0A%20%20%20%20articleID%0A%20%20%20%20content%0A%20%20%20%20userId%0A%20%20%20%20createdAt%0A%20%20%20%20commentID%0A%20%20%20%20votes%0A%20%20%20%20blockedUsers%0A%20%20%20%20__typename%0A%20%20%7D%0A%7D%0A&variables=%7B%7D 405 (Method Not Allowed)

これは明らかに、URLにクエリパラメータが含まれていても、HTTPメソッドが正しくないことを意味します。 Postmanを使用してそのURLをクエリするか、ブラウザーのアドレスバーを使用してURLに移動すると、GraphQLデータが取得されます。クエリを正常に実行するには、_https://cors-anywhere.herokuapp.com/_を使用する必要があります。

私は何が間違っているのですか?

5

オプションリクエストはおそらく プリフライトリクエスト for [〜#〜] cors [〜#〜] です。

CORSプリフライトリクエストは、CORSプロトコルが理解されているかどうかを確認するCORSリクエストです。これは、Access-Control-Request-Method、Access-Control-Request-Headers、およびOriginヘッダーの3つのHTTPリクエストヘッダーを使用するOPTIONSリクエストです。

おそらく、クロスオリジンコールを許可するようにサーバーを構成する必要があります。

たぶん、あなたはあなたが始めるためにここでいくつかのインスピレーションを見つけることができます。 CORSを許可REST Heroku上のExpress/Node.jsアプリケーションへのリクエスト

5
JOSEFtw