什么是跨域问题
跨域问题指的是浏览器限制了从一个源(协议、域名、端口)访问另一个源的资源的行为,这个限制是浏览器的一个安全机制。如果一个网页从一个源加载了另一种类型的资源(例如 HTML、CSS、脚本或图像)但是资源的来源是不同的源,那么就会发生跨域问题。
当一个请求url的协议、域名、端口三者之间任意一个与当前页面url不同即为跨域
当前页面url | 被请求页面url | 是否跨域 | 原因 |
---|---|---|---|
http://www.xxma.com/ | http://www.xxma.c服务器托管网om/index | 否 | 同源(协议、域名、端口号相同) |
http://www.xxma.com/ | https://www.xxma.com/ | 是 | 协议不同(http/https) |
http服务器托管网://www.xxma.com/ | http://www.xm.com/ | 是 | 主域名不同 |
http://www.xxma.com/ | http://cnblog.xxma.com/ | 是 | 子域名不同 |
http://www.xxma.com:8080/ | http://www.xxma.com:8081/ | 是 | 端口号不同 |
实际解决
1.下载flask_cors 包
pip install flask-cors
2.使用flask_cors的CORS
app初始化的时候就加载配置
from flask import Flask
from flask_cors import CORS
app = Flask(__name__)
# r'/*' 是通配符,让本服务器所有的 URL 都允许跨域请求
CORS(app, resources=r'/*')
if __name__ == "__main__":
app.run()
配置参数说明
参数 | 类型 | Head字段 | 说明 |
---|---|---|---|
resources | 字典、迭代器或字符串 | 无 | 全局配置允许跨域的API接口 |
origins | 列表、字符串或正则表达式 | Access-Control-Allow-Origin | 配置允许跨域访问的源 *表示全部允许 |
methods | 列表、字符串 | Access-Control-Allow-Methods | 配置跨域支持的请求方式,如:GET、POST |
expose_headers | 列表、字符串 | Access-Control-Expose-Headers | 自定义请求响应的Head信息 |
allow_headers | 列表、字符串或正则表达式 | Access-Control-Request-Headers | 配置允许跨域的请求头 |
supports_credentials | 布尔值 | Access-Control-Allow-Credentials | 是否允许请求发送cookie,false是不允许 |
max_age | 整数、字符串 | Access-Control-Max-Age | 预检请求的有效时长 |
3.在被请求的Response header中加入header
middlewares.py中加入
def add_cors_headers(response: Flask.response_class) -> Flask.response_class:
response.headers.set("Access-Control-Allow-Origin", "*")
response.headers.set("Access-Control-Allow-Headers", "*")
response.headers.set("Access-Control-Allow-Methods", "*")
return response
# 在请求上下文中添加中间件函数
def setup_middlewares(app: Flask) -> None:
app.after_request(add_cors_headers)
服务器托管,北京服务器托管,服务器租用 http://www.fwqtg.net
机房租用,北京机房租用,IDC机房托管, http://www.fwqtg.net
相关推荐: 【专题】2022母婴行业洞察报告PDF合集分享(附原数据表)
报告链接:http://tecdat.cn/?p=32654 原文出处:拓端数据部落公众号 在这一特别的环境下,我国的母婴消费市场将会发生什么新的变化?面对这一代又一代交替的母亲与母亲,他们的消费观念与养育模式又有什麽新的标记?面对怎样的新挑战,新的机会?报告…