0
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

個人的備忘録:CORSを理解するために、Flask-CORSを使ってフロントエンドの通信テストをしてみた

Last updated at Posted at 2025-02-17

はじめに

Web開発をしていると、異なるオリジン(ドメインやポートが異なるサイト)からAPIを呼び出すことがあります。

しかし、ブラウザのセキュリティ機能により、CORS (Cross-Origin Resource Sharing) の設定がないとアクセスが制限されてしまいます。

この記事では、PythonのFlaskを使って簡単にCORSを有効にし、ブラウザからAPIを呼び出せるようにする方法を紹介します。

1. 必要なライブラリをインストール

まず、FlaskとFlask-CORSをインストールします。

pip install flask flask-cors

2. Flaskサーバーを作成

以下のコードで簡単なFlaskサーバーを作成します。このサーバーは、/api/data というエンドポイントを持ち、CORSを有効にしています。

from flask import Flask, jsonify
from flask_cors import CORS

app = Flask(__name__)
CORS(app)  # すべてのオリジンからのリクエストを許可

@app.route('/api/data')
def get_data():
    return jsonify({"message": "Hello, CORS!"})

if __name__ == '__main__':
    app.run(debug=True, port=5000)

このコードを app.py というファイル名で保存します。

3. フロントエンドを作成

次に、CORSの動作を確認するための簡単なHTMLページを作成します。

<!DOCTYPE html>
<html lang="ja">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>CORS テスト</title>
</head>
<body>
    <h1>CORS テスト</h1>
    <button onclick="fetchData()">データ取得</button>
    <p id="result"></p>

    <script>
        function fetchData() {
            fetch('http://127.0.0.1:5000/api/data')
                .then(response => response.json())
                .then(data => {
                    document.getElementById('result').innerText = data.message;
                })
                .catch(error => console.error('Error:', error));
        }
    </script>
</body>
</html>

このHTMLファイルを index.html として保存します。

4. Flaskサーバーを起動

ターミナルでFlaskサーバーを起動します。

python app.py

5. 動作確認

  1. index.html をブラウザで開きます。
  2. 「データ取得」ボタンを押します。
  3. Hello, CORS! のメッセージが表示されれば成功です。

実際のブラウザ画面

Screenshot 2025-02-17 at 13.06.40.png

Flaskサーバー画面

Screenshot 2025-02-17 at 13.07.26.png

6. CORSの制限をカスタマイズ

すべてのオリジンを許可するのではなく、特定のオリジンのみ許可することも可能です。

CORS(app, resources={r"/api/*": {"origins": "http://example.com"}})

これにより、http://example.com からのリクエストのみ許可されます。

まとめ

  • Flask-CORSを使えば簡単にCORSを有効化できる。
  • フロントエンドからAPIを呼び出してCORSを確認できる。
  • CORSの設定をカスタマイズして、特定のオリジンのみ許可可能。

この方法を使えば、CORSに悩まされることなく開発を進められます。ぜひ試してみてください!

0
2
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
0
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?