Skip to main content
Widget chạy trong iframe trên trang của bạn, nên mọi lệnh gọi từ trình duyệt tới Visitor API đều là khác nguồn. Thiếu header CORS thì trình duyệt vứt bỏ một phản hồi 200 hoàn toàn hợp lệ trước khi mã JavaScript nhìn thấy nó: máy chủ ghi log thành công, còn khung chat thì trống trơn.

Quy tắc

  • Với lệnh tạo phiên, Access-Control-Allow-Origin luôn lấy từ danh sách cho phép, không bao giờ là * và không bao giờ là giá trị do yêu cầu tự chọn. Riêng lệnh đọc cấu hình trả lời mọi nguồn và phản chiếu lại đúng Origin của yêu cầu.
  • Danh sách cho phép gồm hai nửa: allowed_domains của kênh, cộng với các tên miền widget của chính nền tảng. Nửa thứ hai luôn có sẵn, nên để trống allowed_domains không làm hỏng widget nhúng.
  • Access-Control-Allow-Credentials không bao giờ được đặt. Xác thực bằng Authorization: Bearer, không bằng cookie.
  • Retry-After nằm trong Access-Control-Expose-Headers, để bạn đọc được khi gặp 429.
  • Header được chấp nhận: authorization, content-type, x-request-id, traceparent. Phương thức: GET, POST, OPTIONS.

Khi nào cần khai allowed_domains

Đừng gọi Visitor API với credentials: "include", yêu cầu sẽ bị trình duyệt chặn.