이 글에서는 주로 Django 크로스 도메인 요청 처리에 대한 샘플 코드를 소개하는데, 이는 특정 참조 가치가 있습니다. 이제는 모든 사람과 공유합니다. 필요한 친구들이 참조할 수 있습니다.
Django가 Ajax 크로스 도메인 액세스를 처리합니다
사용 javascript Ajax 접속 중 다음 오류가 발생했습니다
오류 원인: JavaScript는 보안상의 이유로 크로스 도메인 액세스가 허용되지 않습니다. 다음 그림은 크로스 도메인 액세스에 대한 설명입니다.
개념:
여기서 언급된 js 크로스 도메인은 ajax를 사용하여 js 또는 python을 통해 서로 다른 도메인 간의 데이터 전송 또는 통신을 의미합니다. 다른 도메인에서 데이터를 요청하거나, js를 통해 페이지 내 다른 도메인의 프레임(Django)에서 데이터를 얻습니다. 프로토콜, 도메인 이름, 포트가 다르면 서로 다른 도메인으로 간주됩니다.
해결책
1. views.py 파일을 수정합니다.
다른 도메인이 Ajax를 통해 데이터를 요청할 수 있도록 views.py에서 해당 API 구현 기능을 수정합니다.
todo_list = [ {"id": "1", "content": "吃饭"}, {"id": "2", "content": "吃饭"}, ] class Query(View): @staticmethod def get(request): response = JsonResponse(todo_list, safe=False) response["Access-Control-Allow-Origin"] = "*" response["Access-Control-Allow-Methods"] = "POST, GET, OPTIONS" response["Access-Control-Max-Age"] = "1000" response["Access-Control-Allow-Headers"] = "*" return response @staticmethod def post(request): print(request.POST) return HttpResponse()
2. django-cors-headers
GitHub 주소: https://github.com/ottoyiu/django-cors-headers
2.1. pip 설치 django-cors-headers
2.2 앱 추가
INSTALLED_APPS = ( ... 'corsheaders', ... )
2.3 미들웨어 추가
MIDDLEWARE = [ # Or MIDDLEWARE_CLASSES on Django < 1.10 ... 'corsheaders.middleware.CorsMiddleware', 'django.middleware.common.CommonMiddleware', ... ]
2.4 이 사이트에 대한 교차 사이트 액세스를 허용하는 주소 구성
CORS_ORIGIN_ALLOW_ALL = False CORS_ORIGIN_WHITELIST = ( 'localhost:63343', ) # 默认值是全部: CORS_ORIGIN_WHITELIST = () # 或者定义允许的匹配路径正则表达式. CORS_ORIGIN_REGEX_WHITELIST = ('^(https?://)?(\w+.)?>google.com$', ) # 默认值: CORS_ORIGIN_REGEX_WHITELIST = ()
2.5 액세스 허용 방법 설정
CORS_ALLOW_METHODS = ( 'GET', 'POST', 'PUT', 'PATCH', 'DELETE', 'OPTIONS' )
2.6 허용되는 헤더 설정:
기본값:
CORS_ALLOW_HEADERS = ( 'x-requested-with', 'content-type', 'accept', 'origin', 'authorization', 'x-csrftoken' )
관련 권장 사항:
Django 프로젝트 실습에서 사용자 아바타 업로드 및 액세스
위 내용은 Django 도메인 간 요청 처리를 위한 샘플 코드의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!