CORS Policy Tester
Uji dan debug konfigurasi CORS dengan skenario browser simulasi.
Pisahkan beberapa asal dengan koma. Gunakan * untuk mengizinkan asal apa pun (tetapi bukan dengan kredensial)
Tentang alat ini
Berbagi Sumber Daya Antar Asal (CORS) adalah mekanisme keamanan web penting yang mengontrol cara browser menangani permintaan antar domain berbeda. Kebijakan CORS yang salah konfigurasi dapat menyebabkan aplikasi gagal diam-diam, sementara kebijakan yang terlalu permisif mengekspos API Anda ke akses yang tidak diinginkan. CORS Policy Tester membantu pengembang memahami dan memvalidasi konfigurasi CORS server mereka dengan mensimulasikan skenario browser nyata tanpa perlu menyiapkan beberapa domain atau menggunakan kode uji.
Untuk menggunakan alat ini, masukkan URL endpoint API Anda dan pilih skenario yang sesuai dengan kasus penggunaan Anda, seperti permintaan asal yang sama, permintaan lintas asal dengan header sederhana, atau permintaan preflight kompleks dengan header atau metode HTTP khusus. Alat ini akan mensimulasikan proses validasi CORS browser dan menunjukkan dengan tepat header apa yang harus dikirim server Anda dalam respons, apakah permintaan akan berhasil, dan pesan kesalahan apa yang akan ditampilkan browser jika kebijakan salah konfigurasi. Ini memudahkan untuk mengidentifikasi masalah CORS sebelum masuk ke produksi.
Alat ini sangat berharga bagi pengembang yang bekerja dengan API REST, layanan mikro, atau backend apa pun yang perlu melayani permintaan dari klien web di domain berbeda. Ini sangat berguna saat mengembangkan di lingkungan lokal di mana frontend dan backend Anda berjalan di port berbeda, atau saat mengintegrasikan layanan pihak ketiga. Dengan menguji berbagai skenario CORS, Anda dapat memastikan API Anda aman dan berfungsi.
Pertanyaan yang Sering Diajukan
Implementasi Kode
# CORS headers generator (Flask example)
from flask import Flask, request, jsonify
app = Flask(__name__)
CORS_CONFIG = {
"allowed_origins": ["https://example.com", "https://app.example.com"],
"allowed_methods": ["GET", "POST", "PUT", "DELETE", "OPTIONS"],
"allowed_headers": ["Content-Type", "Authorization", "X-Requested-With"],
"allow_credentials": True,
"max_age": 86400,
}
def add_cors_headers(response, origin):
allowed = CORS_CONFIG["allowed_origins"]
if origin in allowed or "*" in allowed:
response.headers["Access-Control-Allow-Origin"] = origin
if CORS_CONFIG["allow_credentials"]:
response.headers["Access-Control-Allow-Credentials"] = "true"
response.headers["Access-Control-Allow-Methods"] = ", ".join(CORS_CONFIG["allowed_methods"])
response.headers["Access-Control-Allow-Headers"] = ", ".join(CORS_CONFIG["allowed_headers"])
response.headers["Access-Control-Max-Age"] = str(CORS_CONFIG["max_age"])
return response
@app.before_request
def handle_preflight():
if request.method == "OPTIONS":
response = app.make_default_options_response()
return add_cors_headers(response, request.headers.get("Origin", ""))
@app.after_request
def apply_cors(response):
origin = request.headers.get("Origin", "")
return add_cors_headers(response, origin)
@app.route("/api/data")
def data():
return jsonify({"message": "CORS configured successfully"})Comments & Feedback
Comments are powered by Giscus. Sign in with GitHub to leave a comment.