ホームページ  >  記事  >  バックエンド開発  >  CORS grpc ゲートウェイ GoLang

CORS grpc ゲートウェイ GoLang

WBOY
WBOY転載
2024-02-12 12:54:091062ブラウズ

CORS grpc 网关 GoLang

php Xiaobian Strawberry は、CORS gRPC ゲートウェイ GoLang を紹介します。 CORS は Cross-Origin Resource Sharing の略で、ブラウザーでクロスドメイン要求を行うために使用されるメカニズムです。 gRPC は、分散システムの構築に使用できる、高性能のオープンソースのリモート プロシージャ コール (RPC) フレームワークです。 GoLang は、高い同時実行性とシンプルさを備えた強力なプログラミング言語です。 CORS gRPC ゲートウェイ GoLang は CORS と gRPC を組み合わせて、Go 言語を通じてゲートウェイを実装し、クロスドメイン要求を実装します。この記事では、CORS gRPC ゲートウェイ GoLang の原理と使用法を詳しく紹介し、このテクノロジーをより深く理解し、応用できるようにします。

質問の内容

私は vue.js 3 フロントエンドを持っており、grpc-gateway を通じて golang バックエンドを呼び出しています。しばらくこれを続けてきましたが、トンネルの先に光が見えてきました。

現在、cors の問題に直面しています。ただし、それに対処する方法については矛盾する情報を読んでいます。そこで、皆様のお役に立てればと思い投稿させていただきました。

これは、grpc (ゲートウェイ) のマルチプレクサ サーバーを初期化する方法のコードです

リーリー

ここに cors 構成を追加する必要があると思いますが、server.go ファイルでどのように設定するかわかりません。..

リーリー

コンソールエラー:

リーリー

このようなものをどこに追加すればよいかわかりません

リーリー

golang grpc ゲートウェイに何かが組み込まれているはずだと思いますが、何も見つかりません。

ご提案をいただければ幸いです。

-----アップデート1-----

試してみました

リーリー ###そして### リーリー ###そして### リーリー ###組み合わせる### リーリー

まだ同じ問題が発生しています。非常にイライラします

回避策

コメントで提供された最新のエラーに基づいて:

オリジン 'localhost:9000' から 'localhost:8080/v1/test' の xmlhttprequest へのアクセスが CORS ポリシーによってブロックされました: プリフライト リクエストへの応答はアクセス制御チェックに失敗しました: http の通常のステータスがありません。

ブラウザは、必要なクロスオリジン リクエストを実行できるかどうかを判断するために、

プリフライト リクエスト

(

options

http メソッド) を送信しています。

サーバーは 2xx 以外の応答で応答しています。 これは、enablecors 関数がリクエストを grpc-gateway ハンドラーに伝播しているためではないかと思われます。このハンドラーは

options

http メソッドに満足せず、おそらくエラー ステータスを返します。はい:### リーリー

したがって、これを回避するには、プレフライト リクエストを行うときに

リクエストをさらに伝播させないようにする必要があります。例: リーリー しかし、上記は依然として cors 処理の適切な実装ではない可能性があります。これには、

github.com/rs/cors

などの既存のパッケージを使用する必要があります。これは、賢明な方法でこれを処理し、潜在的な落とし穴などに対処します。 したがって、

github.com/rs/cors

をインポートして、次の操作を実行します。 リーリー を実行すると、すべてをやり過ごすことができるようになります。このライブラリを使用すると、特定のオリジン、http メソッドなどをニーズに合わせて調整できます。

以上がCORS grpc ゲートウェイ GoLangの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はstackoverflow.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。