Giao diện
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:
- Cấu hình server cho phép iframe: xóa hoặc sửa header
X-Frame-Options - Hoặc sử dụng
Content-Security-Policy: frame-ancestorsđể chỉ định domain được phép - 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:
- Truyền token qua URL: Thêm
?token=<bearer-token>vào URL embed. Plugin sẽ tự động xác thực. - Để 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-uidEmbed link có hết hạn không?
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:
- Kiểm tra token còn hợp lệ (chưa hết hạn)
- Đảm bảo user có quyền truy cập trang tương ứng
- Nếu dùng anonymous embed, kiểm tra ACL cho phép anonymous access
Trang embed bị trắng (blank)?
Kiểm tra:
- URL embed đúng format (
/embed/page-uid) - Page UID tồn tại và trang có nội dung
- Xem console trình duyệt để kiểm tra lỗi JavaScript
- 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-Policyheader hoặc đặt thànhno-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-scripts và allow-same-origin là bắt buộc để Digiforce hoạt động trong iframe.
Vấn đề khác
So sánh embed với chia sẻ link bình thường?
| Tiêu chí | Embed (/embed/...) | Admin (/admin/...) |
|---|---|---|
| Header/Sidebar | Ẩn | Hiển thị |
| Session | SessionStorage (cách ly) | localStorage |
| Phù hợp cho | Nhúng vào website khác | Truy cập trực tiếp |
| KeepAlive | Có | Có |
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.