เครื่องมือทดสอบ 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 (สำหรับการทดสอบเซิร์ฟเวอร์โดยตรง)
    เครื่องมือทดสอบ CORS