Django 크로스 필드 요청 처리 예제 코드

django 처리 Ajax 크로스 도 메 인 접근
javascript 을 사용 하여 ajax 에 접근 할 때 다음 과 같은 오류 가 발생 했 습 니 다.

오류 원인:자바 script 은 안전 고려 에 있 으 며,도 메 인 접근 을 허용 하지 않 습 니 다.다음 그림 은 도 메 인 방문 에 대한 설명 입 니 다.

개념:
여기 서 말 하 는 js 크로스 도 메 인 은 js 나 python 을 통 해 서로 다른 도 메 인 간 에 데이터 전송 이나 통신 을 하 는 것 을 말한다.예 를 들 어 ajax 로 서로 다른 도 메 인 에 데 이 터 를 요청 하거나 js 를 통 해 페이지 의 서로 다른 도 메 인 프레임 워 크(Django)의 데 이 터 를 가 져 오 는 것 을 말한다.프로 토 콜,도 메 인 이름,포트 가 다 르 면 서로 다른 도 메 인 으로 여 겨 집 니 다.
해결 방법
1.views.py 파일 수정
views.py 에 대응 하 는 API 구현 함 수 를 수정 하여 다른 도 메 인 이 Ajax 를 통 해 데 이 터 를 요청 할 수 있 도록 합 니 다.

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 install 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 허 용 된 header 설정:
기본 값:

CORS_ALLOW_HEADERS = (
'x-requested-with',
'content-type',
'accept',
'origin',
'authorization',
'x-csrftoken'
)
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.

좋은 웹페이지 즐겨찾기