Mở X-Frame-Option trên Nginx (cho phép gọi iframe trên server khác)

Kiểm tra X-Frame-Options

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.

Kiểm tra X-Frame-Options
Kiểm tra X-Frame-Options sau khi đã sửa

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.

[codesyntax lang=”php”]

add_header X-Frame-Options ALLOWALL;

[/codesyntax]

Bạn thêm nó trong đoạn server, thêm ngay ở đoạn đầu nhé.

Open X-Frame-Option
Open X-Frame-Option

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.

Cuối cùng là restart lại Nginx để nó nhận:

[codesyntax lang=”php”]

service nginx restart

[/codesyntax]

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é.

Author: Tú Cao

Tôi là Tú Cao. Tôi chia sẻ và dạy mọi người cách kinh doanh trên Internet. Bởi vì "Hạnh phúc không phải là nhận, hạnh phúc chính là sự cho đi". Bài viết này dựa trên quan điểm, hiểu biết của Tôi. Bạn tự cân nhắc và chịu trách nhiệm khi làm theo, nếu nó hữu ích với bạn hãy Mời Tú Cao một tách CÀ PHÊ.  

5 Replies to “Mở X-Frame-Option trên Nginx (cho phép gọi iframe trên server khác)”

  1. Phát says: 13/04/2021 at 14:41

    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

  2. Solomen says: 24/08/2020 at 16:44

    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.

    1. Tú Cao says: 01/09/2020 at 11:11

      Chào bạn,

      Hoàn toàn được bạn nhé.

      1. Solomen says: 11/10/2020 at 16:31

        Vậy cách thực hiện như thế nào, bạn có thể cập nhật trong bài viết này luôn được không ạ.

  3. Nông Tiến Thành says: 01/11/2018 at 21:00

    Cảm ơn sếp Tú nhé!
    Bảo sao chạy link ở http://ami.responsivedesign.is không được 🙂

Trả lời

Your email address will not be published.

You may use these <abbr title="HyperText Markup Language">html</abbr> tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*