Bỏ qua, đến nội dung

Câu hỏi thường gặp (FAQ) — Embed

Sử dụng

Iframe báo lỗi "Refused to connect" hoặc "blocked by X-Frame-Options"?

Nguyên nhân: Server Digiforce có header X-Frame-Options: DENY hoặc SAMEORIGIN, ngăn iframe từ domain khác.

Cách khắc phục:

  1. Cấu hình server cho phép iframe: xóa hoặc sửa header X-Frame-Options
  2. Hoặc sử dụng Content-Security-Policy: frame-ancestors để chỉ định domain được phép
  3. Cấu hình CORS cho phép origin của website bên ngoài

Có thể nhúng trang cần đăng nhập không?

Có. Có hai cách:

  1. Truyền token qua URL: Thêm ?token=<bearer-token> vào URL embed. Plugin sẽ tự động xác thực.
  2. Để user tự đăng nhập: Nếu không truyền token, trang sẽ hiển thị lỗi 403. User cần đăng nhập Digiforce trước trong cùng trình duyệt.

Làm sao ẩn header và sidebar?

Plugin tự động ẩn header và sidebar cho trang nhúng. Khi truy cập qua URL /embed/..., layout đặc biệt được áp dụng với --df-header-height: 0px — chỉ hiển thị nội dung trang.

Có thể nhúng một tab cụ thể trong trang nhiều tab không?

Có. Sử dụng URL format:

https://your-domain.com/embed/page-uid/tabs/tab-uid

Embed link dựa trên page UID — không hết hạn miễn là trang vẫn tồn tại. Tuy nhiên, nếu sử dụng token trong URL, token sẽ hết hạn theo cấu hình token TTL.

Session embed có ảnh hưởng đến session admin không?

Không. Plugin tạo session riêng biệt cho embed:

  • Sử dụng sessionStorage thay vì localStorage
  • Tạo storage prefix ngẫu nhiên (uid().toUpperCase())
  • Session embed bị xóa khi đóng tab/trình duyệt

Lỗi thường gặp

Trang embed hiển thị 403 "Not Authorized"?

Nguyên nhân: User chưa đăng nhập hoặc token không hợp lệ.

Cách khắc phục:

  1. Kiểm tra token còn hợp lệ (chưa hết hạn)
  2. Đảm bảo user có quyền truy cập trang tương ứng
  3. Nếu dùng anonymous embed, kiểm tra ACL cho phép anonymous access

Trang embed bị trắng (blank)?

Kiểm tra:

  1. URL embed đúng format (/embed/page-uid)
  2. Page UID tồn tại và trang có nội dung
  3. Xem console trình duyệt để kiểm tra lỗi JavaScript
  4. Kiểm tra CORS nếu nhúng từ domain khác

Dữ liệu không hiển thị trên trang embed?

  • User/token không có quyền đọc collection tương ứng
  • ACL kiểm tra giống như truy cập admin — cần đảm bảo role có quyền phù hợp
  • Nếu dùng token, kiểm tra token thuộc user có role đúng

Bảo mật

Truyền token qua URL có an toàn không?

Có rủi ro. Token trong URL có thể lộ qua:

  • Browser history
  • Server access log
  • Referrer header khi navigate

Khuyến nghị:

  • Chỉ dùng cho môi trường nội bộ (intranet)
  • Sử dụng token có thời hạn ngắn
  • Xóa Referrer-Policy header hoặc đặt thành no-referrer

Nên cấu hình sandbox cho iframe không?

Nếu nhúng Digiforce vào website bên ngoài, có thể thêm sandbox attribute:

html
<iframe
  src="https://your-domain.com/embed/page-uid?token=xxx"
  sandbox="allow-scripts allow-same-origin allow-forms allow-popups"
></iframe>

TIP

allow-scriptsallow-same-origin là bắt buộc để Digiforce hoạt động trong iframe.

Vấn đề khác

Tiêu chíEmbed (/embed/...)Admin (/admin/...)
Header/SidebarẨnHiển thị
SessionSessionStorage (cách ly)localStorage
Phù hợp choNhúng vào website khácTruy cập trực tiếp
KeepAlive

Có thể nhúng Digiforce vào mobile app không?

Có. Sử dụng WebView trong mobile app (React Native, Flutter, native) để load URL embed. Truyền token qua URL parameter để xác thực.