4

サーバーで Beego フレームワークを使用し、クライアント側で AngularJS を使用して RESTFul API を開発しています。サーバーとクライアントの両方が私のラップトップにあります(まだ開発中です)。クライアントは 127.0.0.1:8000 で実行され、サーバーは 127.0.0.1:8080 で実行されます。

(AngularJS $http サービスを使用して) エンドポイントにアクセスしようとすると、次のエラーが発生します。

XMLHttpRequest はhttp://127.0.0.1:8080/v1/products/を読み込めません。要求されたリソースに「Access-Control-Allow-Origin」ヘッダーがありません。したがって、オリジン「http://127.0.0.1:8000」へのアクセスは許可されません。

この CORS を beego に設定する必要があることはわかっています。残念ながら、Google を検索した後、私が得た唯一の答えは公式ウェブサイト (コメント セクション) からのもので、私には十分に明確ではありませんでした. 何かアドバイス?どのようなコードを記述し、Beego のどこに配置すればよいですか?

4

2 に答える 2

9

import ステートメントに "github.com/astaxie/beego/plugins/cors" を含めて、cors プラグインを使用します。

パッケージには、以下に示すコメントアウトされた例があります。

 func main() {
 // CORS for https://foo.* origins, allowing:
 // - PUT and PATCH methods
 // - Origin header
// // - Credentials share
 beego.InsertFilter("*", beego.BeforeRouter,cors.Allow(&cors.Options{
 AllowOrigins: []string{"https://*.foo.com"},
 AllowMethods: []string{"PUT", "PATCH"},
 AllowHeaders: []string{"Origin"},
 ExposeHeaders: []string{"Content-Length"},
 AllowCredentials: true,
 }))
 beego.Run()
 }

誰でもバックエンドにアクセスできるようにするには、AllowOrigins パラメーターを []String{"*"} に変更します。そしておそらく、AllowMethods パラメータに「GET」を含めます。

于 2015-02-05T05:42:04.273 に答える