Mở X-Frame-Option trên Nginx (cho phép gọi iframe trên server khác)
Mặc định Nginx chỉ cho phép gọi iframe trên chính domain đó. Nếu bạn gọi từ 1 website khác một đoạn iframe nó sẽ chặn và không cho phép. Để khắc phục điều này phải thay đổi lại cấu hình của nginx cho domain này, hay nói cách khác mà chỉnh lại X-Frame-Option. Để kiểm tra X-Frame-Option đã mở hay chưa thì bạn dùng Chrome, nhấn F12 và chọn Network, sau đó click vào URL bên cột trái rồi nhìn hình bên dưới. Trước khi chỉnh bạn nên lưu ý, hạn chế mở cái này nếu ko thật sự cần thiết. Bởi nếu cho website khác gọi iframe từ website của bạn cũng sẽ có 1 số nguy cơ. Sau đó bạn tìm file nginx, thường nó sẽ nằm ở : /etc/nginx/conf.d/ Trong đó chứa tất cả domain và server của bạn chạy, edit domain bạn muốn sửa Sau đó bạn thêm hoặc sửa lại thành.
add_header X-Frame-Options ALLOWALL;
Bạn thêm nó trong đoạn server, thêm ngay ở đoạn đầu nhé. Các giá trị chúng ta thường dùng. - ALLOWALL là cho phép
- Mặc định là SAMEORIGIN tức là cho phép trên chính domain này
- DENY là từ chối.
service nginx restart
Vậy là xong rồi, chúc bạn thành công. Hy vọng bài viết này sẽ giúp được bạn nào đó giải quyết vấn đề tiết kiệm thời gian hơn. Tú không chuyên về server, do đó không mô tả kỹ được hoặc có thể viết bị sai. Vì vậy trước khi sửa chữa gì, bạn nên backup lại file bạn chuẩn bị sửa nhé.
5 Bình luận
Chào bạn, hiện mình đã làm theo hướng dẫn của bạn và thành công, nhưng hiện tại mình đang gặp vấn đề khác từ việc sử dụng IFRAME từ SITEA được cấu hình dùng NGINX, vấn đề là nếu sử dụng mã trên các tên miền khác SiteB, SiteC thì vấn đề là xem trên trình duyệt bình thường thì không vấn đề gì, IFRAME hoạt động tốt, nhưng khi sử dụng Trình duyệt ẩn thì vấn đề xử lý AJAX Javascript bị lỗi với thông báo "Uncaught DOMException: Failed to read the 'localStorage' property from 'Window': Access is denied for this document.", mình đã thử nhiều giải pháp để các tên miền khác đều có thể gắn dc thẻ IFRAME từ SiteA, Nhưng vẫn chưa thành công, rất mong được bạn hỗ trợ, cám ơn bạn
Chào Tú, Bài viết của bạn rất hữu ích với mình, tuy nhiên mình muốn hỏi là muốn chỉ cho phép iFrame sử dụng được cho một website nhất định thì không biết có được không? Cảm ơn bài viết này của bạn.
Cảm ơn sếp Tú nhé! Bảo sao chạy link ở http://ami.responsivedesign.is không được :)