django로 만든 웹크롤링 사이트를 iframe 태그로 다른 html에 뿌려줘야하는 상황이 있었다.
그냥 iframe 태그로 뿌리니까 해당 사이트에서 연결이 거부되는 문제가 있었다.
아래 방법으로 해결하였다. 적용은 AWS EC2 등 다른 서버에서도 동일하다.
해결책은
from django.http import HttpResponse
from django.views.decorators.clickjacking import xframe_options_exempt
@xframe_options_exempt
def ok_to_load_in_a_frame(request):
return HttpResponse("This page is safe to load in a frame on any site.")
이처럼 decorator를 사용하면 가장 간단히 해결할 수 있다.
다른 방법도 있는데 middleware를 사용하는 것이다.
setting.py에 아래 코드를 추가해주면 된다.
MIDDLEWARE = [
...
'django.middleware.clickjacking.XFrameOptionsMiddleware',
...
]
X_FRAME_OPTIONS = 'DENY'
참고문서 : https://docs.djangoproject.com/en/1.10/ref/clickjacking/#how-to-use-it
'Web > Django' 카테고리의 다른 글
Docker를 이용하여 Django와 Nginx 쉽게 연동하기 (0) | 2020.06.07 |
---|---|
OperationalError: no such table: authtoken_token (1) | 2020.04.22 |
django.db.migrations.exceptions.InconsistentMigrationHistory: (1) | 2020.04.21 |
No matching distribution found for pkg-resources==0.0.0 (0) | 2020.03.19 |
Django 사이트 Amazon EC2 배포01. [인스턴스 생성 및 Putty로 접속] (0) | 2020.03.07 |