4
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

ReactでCORSエラー

Last updated at Posted at 2022-07-08

概要

サーバサイドが得意なエンジニアですが、フロントエンドも少し勉強しようと思ってReactの学習はじめました。

最近勉強してもすぐ忘れます(>_<)

Reactでaxiosを使って外部API(Amazon API Gatewayで作ったMockのAPI)を呼び出した時にCORSエラーが出て色々調べた結果やっとこの設定で動いたというのを自分のために記録しておきます。

表示されたエラー

Access to XMLHttpRequest at 'https://hoge-foo-piyo.amazonaws.com/dev/users' from origin 'http://localhost:3000' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.

Proxyを使えばいいらしい?

色々と調べてhttp-proxy-middlewareをインストールしてproxyを使えば簡単に出来るということは分かりましたが、なかなか表示されない。暑い中イライラ。今年の夏も暑いですね(>_<)

出来たこと

http-proxy-middlewareは問題なくインストール出来た。

でもなんかProxyの設定がうまくいかない。

結論

(1)src配下に、setupProxy.jsを作る。
色々調べるとだいたいこのファイル名ですが、このファイル名でないとどうなるんだろう?あとで確かめてみる。

(2)setupProxy.jsの中身をこれにしたらうまくいきました。

const { createProxyMiddleware } = require("http-proxy-middleware");

module.exports = function (app) {
  app.use(
    "/dev/users",
    createProxyMiddleware({
      target: "https://hoge-foo-piyo.amazonaws.com",
      changeOrigin: true,
    })
  );
};

(3)axios側
axios.get("/dev/users")と書くと、

アプリ側からのhttp://localhost:3000/dev/usersというリクエストがhttps://hoge-foo-piyo.amazonaws.com/dev/usersに転送されて外部APIからデータを取得出来ました。

参考にしたサイト

react開発時に特定のリクエストを外部サーバへ転送する方法
以上

4
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?