CORS 설명 + Python 프로젝트에서 활성화

6750 단어 pythonwebdev

CORS



CORS("Cross-Origin Resource Sharing")는 리소스를 요청하는 도메인이 해당 리소스를 제공하는 도메인과 다른 경우를 나타냅니다. 이는 프론트엔드와 백엔드가 서로 다른 출처에 있고 프론트엔드가 JavaScript 코드를 사용하여 백엔드와 통신할 때 자주 발생합니다.

기원



"Origin"은 프로토콜(예: http, https), 도메인(예: somedomain.com, localhost) 및 포트(예: 80, (79914), 443, 3000,41)의 조합입니다. ).

그러므로 이 모든 것들은 서로 다른 기원입니다.
  • 8000
  • http://localhost
  • http://localhost:8000

  • CORS 허용



    브라우저는 보안 문제로 인해 스크립트에서 시작된 교차 출처 HTTP 요청을 제한합니다. 따라서 CORS를 활성화하려면 허용된 출처(교차 출처 요청을 허용하는 출처), 허용된 메소드(교차 출처 요청이 허용되는 HTTP 메소드) 및 허용된 헤더(다음을 수행하는 HTTP 요청 헤더)를 지정해야 합니다. 교차 출처 요청에 대해 지원되어야 함) 등

    CORS 요청 유형



    실행 전 요청



    도메인 간 요청을 수행하기 전에 브라우저는 해당 요청이 허용되는지 여부를 결정하기 위해 "프리플라이트"요청을 시작합니다. 비행 전 요청은 HTTP 메소드의 한 유형인 https://localhost 에 의해 수행됩니다.

    단순 요청



    요청이 특정 조건을 충족하는 경우 브라우저는 실행 전 요청을 보내지 않습니다.

    단순 요청은 다음 조건을 충족합니다.
  • HTTP 메서드는 다음 중 하나입니다.
  • OPTIONS
  • GET
  • HEAD

  • 사용자 에이전트가 자동으로 설정한 헤더 외에 수동으로 설정할 수 있는 헤더는 다음 중 하나뿐입니다.
  • POST
  • Accept
  • Accept-Language
  • Content-Language
  • Content-Type , application/x-www-form-urlencoded , multipart/form-data 만 값으로 허용됩니다


  • text/plain 객체를 사용하여 요청한 경우 요청에 사용된 XMLHttpRequest 속성에서 반환된 객체에 이벤트 리스너가 등록되지 않음
  • 요청에 XMLHttpRequest.upload 개체가 사용되지 않습니다.

  • CORS에 대한 자세한 내용은 this document 을 확인하십시오.

    CORS 실습



    장고



    CORS 모듈 설치:ReadableStream
    # settings.py
    ALLOWED_HOSTS = ['*'] # '*' is a wildcard which allows any host
    
    INSTALLED_APPS = [
        ...
        'corsheaders',
        ...
    ]
    
    MIDDLEWARE = [
        ...
        'corsheaders.middleware.CorsMiddleware',
        ...
    ]
    
    # CORS settings
    CORS_ORIGIN_ALLOW_ALL=True
    CORS_ALLOW_CREDENTIALS = True
    
    CORS_ALLOW_METHODS = (
        'DELETE',
        'GET',
        'OPTIONS',
        'PATCH',
        'POST',
        'PUT',
    )
    
    CORS_ALLOW_HEADERS = (
        'accept',
        'accept-encoding',
        'authorization',
        'content-type',
        'dnt',
        'origin',
        'user-agent',
        'x-csrftoken',
        'x-requested-with',
    )
    


    django-cors-headers에 대한 자세한 내용은 this document 을 확인하십시오.

    빠른 API




    # main.py
    from fastapi.middleware.cors import CORSMiddleware
    
    app = FastAPI()
    
    origins = ["*"]
    
    app.add_middleware(
        CORSMiddleware,
        allow_origins=origins,
        allow_credentials=True,
        allow_methods=["*"],
        allow_headers=["*"],
    )
    


    FastAPI CORS 설정에 대한 자세한 내용은 this document 을 확인하십시오.

    플라스크



    CORS 확장 설치:pip install django-cors-headers
    # main.py
    from flask-cors import CORS
    
    app = Flask(__name__)
    
    CORS(app)
    


    flask-cors에 대한 자세한 내용은 this document 을 확인하십시오.

    좋은 웹페이지 즐겨찾기