>  기사  >  백엔드 개발  >  Python Flask는 도메인 간 문제를 해결합니다.

Python Flask는 도메인 간 문제를 해결합니다.

coldplay.xixi
coldplay.xixi앞으로
2020-09-30 17:23:143097검색

python 동영상 튜토리얼 칼럼에서는 도메인 간 문제를 해결하기 위한 Python Flask를 소개합니다.

Python Flask는 도메인 간 문제를 해결합니다.

목차

머리말사용 단계

    1. CORS 기능을 사용하세요. 글로벌 라우팅
  • 2. 단일 라인 라우팅을 구성하려면 @cross_origin을 사용하세요
  • 구성 매개변수 설명
    • Summary
      • Reference

      머리말CORS函数 配置全局路由

    • 2. 使用 @cross_origin 来配置单行路由
    • 配置参数说明
    • 总结
    • 参考

    • 前言

      我靠,又跨域了

      使用步骤

      1. 引入库

      pip install flask-cors复制代码

      2. 配置

      flask-cors 有两种用法,一种为全局使用,一种对指定的路由使用

      1. 使用 CORS函数 配置全局路由

      from flask import Flask, requestfrom flask_cors import CORS
      
      app = Flask(__name__)
      CORS(app, supports_credentials=True)复制代码

      其中 CORS 提供了一些参数帮助我们定制一下操作。

      常用的我们可以配置 originsmethodsallow_headerssupports_credentials

      所有的配置项如下:

      :param resources:
          The series of regular expression and (optionally) associated CORS
          options to be applied to the given resource path.
      
          If the argument is a dictionary, it's keys must be regular expressions,
          and the values must be a dictionary of kwargs, identical to the kwargs
          of this function.
      
          If the argument is a list, it is expected to be a list of regular
          expressions, for which the app-wide configured options are applied.
      
          If the argument is a string, it is expected to be a regular expression
          for which the app-wide configured options are applied.
      
          Default : Match all and apply app-level configuration
      
      :type resources: dict, iterable or string
      
      :param origins:
          The origin, or list of origins to allow requests from.
          The origin(s) may be regular expressions, case-sensitive strings,
          or else an asterisk
      
          Default : '*'
      :type origins: list, string or regex
      
      :param methods:
          The method or list of methods which the allowed origins are allowed to
          access for non-simple requests.
      
          Default : [GET, HEAD, POST, OPTIONS, PUT, PATCH, DELETE]
      :type methods: list or string
      
      :param expose_headers:
          The header or list which are safe to expose to the API of a CORS API
          specification.
      
          Default : None
      :type expose_headers: list or string
      
      :param allow_headers:
          The header or list of header field names which can be used when this
          resource is accessed by allowed origins. The header(s) may be regular
          expressions, case-sensitive strings, or else an asterisk.
      
          Default : '*', allow all headers
      :type allow_headers: list, string or regex
      
      :param supports_credentials:
          Allows users to make authenticated requests. If true, injects the
          `Access-Control-Allow-Credentials` header in responses. This allows
          cookies and credentials to be submitted across domains.
      
          :note: This option cannot be used in conjuction with a '*' origin
      
          Default : False
      :type supports_credentials: bool
      
      :param max_age:
          The maximum time for which this CORS request maybe cached. This value
          is set as the `Access-Control-Max-Age` header.
      
          Default : None
      :type max_age: timedelta, integer, string or None
      
      :param send_wildcard: If True, and the origins parameter is `*`, a wildcard
          `Access-Control-Allow-Origin` header is sent, rather than the
          request's `Origin` header.
      
          Default : False
      :type send_wildcard: bool
      
      :param vary_header:
          If True, the header Vary: Origin will be returned as per the W3
          implementation guidelines.
      
          Setting this header when the `Access-Control-Allow-Origin` is
          dynamically generated (e.g. when there is more than one allowed
          origin, and an Origin than '*' is returned) informs CDNs and other
          caches that the CORS headers are dynamic, and cannot be cached.
      
          If False, the Vary header will never be injected or altered.
      
          Default : True
      :type vary_header: bool复制代码

      2. 使用 @cross_origin 来配置单行路由

      from flask import Flask, requestfrom flask_cors import cross_origin
      
      app = Flask(__name__)@app.route('/')@cross_origin(supports_credentials=True)def hello():
          name = request.args.get("name", "World")    return f'Hello, {name}!'复制代码

      其中 cross_originCORS 提供一些基本相同的参数。

      常用的我们可以配置 originsmethodsallow_headerssupports_credentials

      所有的配置项如下:

      :param origins:
          The origin, or list of origins to allow requests from.
          The origin(s) may be regular expressions, case-sensitive strings,
          or else an asterisk
      
          Default : '*'
      :type origins: list, string or regex
      
      :param methods:
          The method or list of methods which the allowed origins are allowed to
          access for non-simple requests.
      
          Default : [GET, HEAD, POST, OPTIONS, PUT, PATCH, DELETE]
      :type methods: list or string
      
      :param expose_headers:
          The header or list which are safe to expose to the API of a CORS API
          specification.
      
          Default : None
      :type expose_headers: list or string
      
      :param allow_headers:
          The header or list of header field names which can be used when this
          resource is accessed by allowed origins. The header(s) may be regular
          expressions, case-sensitive strings, or else an asterisk.
      
          Default : '*', allow all headers
      :type allow_headers: list, string or regex
      
      :param supports_credentials:
          Allows users to make authenticated requests. If true, injects the
          `Access-Control-Allow-Credentials` header in responses. This allows
          cookies and credentials to be submitted across domains.
      
          :note: This option cannot be used in conjuction with a '*' origin
      
          Default : False
      :type supports_credentials: bool
      
      :param max_age:
          The maximum time for which this CORS request maybe cached. This value
          is set as the `Access-Control-Max-Age` header.
      
          Default : None
      :type max_age: timedelta, integer, string or None
      
      :param send_wildcard: If True, and the origins parameter is `*`, a wildcard
          `Access-Control-Allow-Origin` header is sent, rather than the
          request's `Origin` header.
      
          Default : False
      :type send_wildcard: bool
      
      :param vary_header:
          If True, the header Vary: Origin will be returned as per the W3
          implementation guidelines.
      
          Setting this header when the `Access-Control-Allow-Origin` is
          dynamically generated (e.g. when there is more than one allowed
          origin, and an Origin than '*' is returned) informs CDNs and other
          caches that the CORS headers are dynamic, and cannot be cached.
      
          If False, the Vary header will never be injected or altered.
      
          Default : True
      :type vary_header: bool
      
      :param automatic_options:
          Only applies to the `cross_origin` decorator. If True, Flask-CORS will
          override Flask's default OPTIONS handling to return CORS headers for
          OPTIONS requests.
      
          Default : True
      :type automatic_options: bool复制代码

      配置参数说明

      参数 类型 Head 默认 说明
      resources 字典、迭代器或字符串 全部 配置允许跨域的路由接口
      origins 列表、字符串或正则表达式 Access-Control-Allow-Origin * 配置允许跨域访问的源
      methods 列表、字符串 Access-Control-Allow-Methods [GET, HEAD, POST, OPTIONS, PUT, PATCH, DELETE] 配置跨域支持的请求方式
      expose_headers 列表、字符串 Access-Control-Expose-Headers None 自定义请求响应的Head信息
      allow_headers 列表、字符串或正则表达式 Access-Control-Request-Headers * 配置允许跨域的请求头
      supports_credentials 布尔值 Access-Control-Allow-Credentials False 是否允许请求发送cookie
      max_age timedelta、整数、字符串 Access-Control-Max-Age None 预检请求的有效时长

      总结

      在 flask 的跨域配置中,我们可以使用 flask-cors 来进行配置,其中 CORS 函数 用来做全局的配置, @cross_origin

      젠장, 또 크로스 도메인이군요

      사용 단계

      1. 라이브러리 가져오기

      rrreee

      2. 구성

      flask-cors에는 두 가지 용도가 있습니다. 하나는 전역 사용용이고 다른 하나는 지정된 경로용입니다.

      1. CORS 기능을 사용하여 전역 라우팅을 구성합니다.

      rrreee여기서 CORS는 몇 가지 매개변수를 제공합니다. 작업을 사용자 정의합니다. 일반적으로 사용되는 origins, methods, allow_headers, supports_credentials를 구성할 수 있습니다
      모든 구성 항목은 다음과 같습니다. :🎜🎜rrreee

      2. @cross_origin을 사용하여 단일 회선 라우팅을 구성합니다.

      rrreee🎜여기서 cross_origin CORS는 본질적으로 동일한 매개변수를 제공합니다. 🎜🎜일반적으로 사용되는 origins, methods, allow_headers, supports_credentials를 구성할 수 있습니다🎜🎜🎜모든 구성 항목은 다음과 같습니다. 다음 :🎜🎜rrreee

      구성 매개변수 설명

      없음
      매개변수 유형 헤드 기본값 설명 번째>
      리소스 사전, 반복자 또는 문자열모두 교차 도메인 라우팅을 허용하는 라우팅 인터페이스 구성
      원본 목록, 문자열 또는 정규 표현식 Access-Control-Allow-Origin * 교차 도메인 액세스를 허용하는 소스 구성
      메소드 목록, 문자열 접근 제어 허용 메소드 [GET , HEAD, POST, OPTIONS, PUT, PATCH, DELETE] 교차 도메인 지원을 위한 요청 방법 구성
      노출_헤더 목록, 문자열 액세스 제어-노출-헤더 없음 요청 응답 헤드 정보 사용자 정의
      allow_headers 목록, 문자열 또는 정규 표현식 Access-Control-Request-Headers * 교차 도메인 요청 헤더 구성
      supports_credentials 부울 값 Access-Control-Allow-Credentials False 쿠키 전송 요청 허용 여부
      max_age timedelta, 정수, 문자열 Access-Control-Max-Age 없음 실행 전 요청의 유효 기간

      요약🎜🎜Flask의 도메인 간 구성에서는 구성에 flask-cors를 사용할 수 있으며, 여기서 CORS 함수는 전역 구성에 사용됩니다. @cross_origin을 사용하여 특정 경로의 구성을 구현합니다. 🎜🎜🎜🎜더 많은 관련 무료 학습 권장사항: 🎜🎜🎜python 비디오 튜토리얼🎜🎜🎜🎜

      위 내용은 Python Flask는 도메인 간 문제를 해결합니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

      성명:
      이 기사는 juejin.im에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제