เครื่องมือทดสอบ CORS
ทดสอบและดีบักนโยบาย CORS (Cross-Origin Resource Sharing) และคำขอ API
การตั้งค่าคำขอ
กำหนดค่าคำขอ API ของคุณสำหรับการทดสอบ
ตัวอย่างคำขอ
ลองใช้คำขอ API ที่กำหนดไว้ล่วงหน้าเหล่านี้
ข้อมูล CORS
ข้อมูลพื้นฐานเกี่ยวกับ CORS
CORS คืออะไร? CORS (Cross-Origin Resource Sharing) เป็นกลไกที่อนุญาตให้เว็บเบราว์เซอร์สร้างคำขอข้ามต้นทาง (โดเมน, โปรโตคอล หรือพอร์ตที่แตกต่างกัน) จากสคริปต์ที่ทำงานในเบราว์เซอร์
ส่วนหัว CORS ที่สำคัญ
Access-Control-Allow-Origin
: ระบุว่าต้นทางใดได้รับอนุญาตให้เข้าถึงทรัพยากรAccess-Control-Allow-Methods
: ระบุว่าวิธีการ HTTP ใดได้รับอนุญาตAccess-Control-Allow-Headers
: ระบุว่าส่วนหัว HTTP ใดสามารถใช้ได้Access-Control-Allow-Credentials
: ระบุว่าจะรวมข้อมูลรับรอง (คุกกี้, การรับรองความถูกต้อง HTTP) หรือไม่
💡 โซลูชัน CORS
โซลูชันฝั่งเซิร์ฟเวอร์
1. Express.js (Node.js):
const cors = require('cors'); app.use(cors({ origin: 'https://example.com', methods: ['GET', 'POST'], credentials: true }));
2. Spring Boot (Java):
@CrossOrigin(origins = "https://example.com") @RestController public class ApiController { ... }
โซลูชันฝั่งไคลเอ็นต์
1. การใช้พร็อกซีเซิร์ฟเวอร์:
// package.json (React) "proxy": "http://localhost:3001"
2. JSONP (เฉพาะ GET):
// โซลูชันที่จำกัดแต่เรียบง่าย fetch('api?callback=handleResponse')
🔧 การกำหนดค่า CORS ตามสภาพแวดล้อม
Next.js
// next.config.js module.exports = { async headers() { return [ { source: '/api/:path*', headers: [ { key: 'Access-Control-Allow-Origin', value: '*' } ] } ] } }
Nginx
location /api { add_header Access-Control-Allow-Origin *; add_header Access-Control-Allow-Methods "GET, POST, OPTIONS"; add_header Access-Control-Allow-Headers "Content-Type, Authorization"; }
Apache
# .htaccess Header always set Access-Control-Allow-Origin "*" Header always set Access-Control-Allow-Methods "GET, POST, OPTIONS" Header always set Access-Control-Allow-Headers "Content-Type, Authorization"
การกำหนดค่า CORS ตามสภาพแวดล้อม
สถานการณ์การทดสอบ
- • คำขอแบบง่าย: ทดสอบพฤติกรรม CORS พื้นฐานด้วยคำขอ GET
- • คำขอ Preflight: ทดสอบคำขอ preflight ด้วยวิธีการ PUT/DELETE
- • ส่วนหัวแบบกำหนดเอง: ทดสอบคำขอด้วยส่วนหัว Authorization
- • ข้อมูลรับรอง: ทดสอบคำขอด้วยคุกกี้
- • การจัดการข้อผิดพลาด: ทดสอบสถานการณ์ความล้มเหลว
ข้อควรพิจารณาด้านความปลอดภัย
- • ระมัดระวังการใช้ wildcard (*) เนื่องจากความเสี่ยงด้านความปลอดภัย
- • หลักการสิทธิ์ขั้นต่ำ: อนุญาตเฉพาะต้นทางและวิธีการที่จำเป็นเท่านั้น
- • ข้อจำกัดข้อมูลรับรอง: อนุญาตเฉพาะต้นทางที่ระบุเมื่อรวมข้อมูลรับรอง
- • การตรวจสอบปกติ: ตรวจสอบและอัปเดตนโยบาย CORS เป็นระยะ
เคล็ดลับการดีบัก CORS
เครื่องมือสำหรับนักพัฒนาเบราว์เซอร์
- • ตรวจสอบคำขอ OPTIONS ในแท็บ Network
- • มองหาข้อความข้อผิดพลาด CORS ใน Console
- • ตรวจสอบส่วนหัว CORS ใน Response Headers
เครื่องมือที่มีประโยชน์
- • เครื่องมือทดสอบ CORS (เครื่องมือนี้)
- • Postman (สำหรับการทดสอบ API)
- • คำสั่ง curl (สำหรับการทดสอบเซิร์ฟเวอร์โดยตรง)