python-3.x - 访问被 CORS 策略阻止:没有“访问控制允许来源”
问题描述
我正在使用以下版本
- 蟒蛇 3.9.6
- Django 3.2.3
- django-cors-headers==3.7.0
我的 settings.py 中有以下内容
CORS_ALLOW_ALL_ORIGINS=True
CORS_ORIGIN_WHITELIST = ('http://localhost:3000',)
由于某种原因,其中一个 API 调用失败并出现此错误。
CORS 策略已阻止从源获取的访问权限:请求的资源上不存在“Access->Control-Allow-Origin”标头。如果不透明的响应满足您的需求,请将请求的模式设置为“no-cors”以获取禁用 CORS 的资源。
我无法理解为什么会收到此错误。
以下是从 Google Chrome 开发者工具中提取的相关请求和响应详细信息
一般 请求网址: http: //10.0.123.123 :8998/api/box?unit=101&box=TOT000000000051345&login_user_id=USERID&reserve_locn=101
请求方法:选项
状态码:200 OK
远程地址:10.0.123.123:8998
推荐人政策:strict-origin-when-cross-origin
响应头 Access-Control-Allow-Headers:accept、accept-encoding、authorization、content-type、dnt、origin、user-agent、x-csrftoken、x-requested-with
访问控制允许方法:DELETE、GET、OPTIONS、PATCH、POST、PUT
访问控制允许来源:*
访问控制最大年龄:86400
连接:保持活动
内容长度:0
内容类型:文本/html;字符集=utf-8
日期:格林威治标准时间 2021 年 9 月 7 日星期二 01:15:10
服务器:nginx/1.20.1
变化:起源
请求标头
选项 /api/box?unit=101&box=TOT000000000051345&login_user_id=USERID&reserve_locn=101 HTTP/1.1
主机:10.0.123.123:8998
连接:保持活动
接受:/
访问控制请求方法:GET
访问控制请求标头:内容类型
来源: http: //10.0.123.123 :8999
用户代理:Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.159 Safari/537.36
Sec-Fetch-Mode: cors
推荐人:http : //10.0.123.123 :8999/
接受编码:gzip,放气
接受语言:en-GB,en-US;q=0.9,en;q=0.8
解决方案
您用于向 django 服务器发出请求的每个 IP 地址或域都应添加到 settings.py 中,如下所示:
CORS_ORIGIN_WHITELIST = ('http://localhost:3000','http://10.0.123.123:8998')
让我在评论中知道结果。
推荐阅读
- regex - 使用正则表达式测试字符是否存在
- rust - 如何检查两个引用变量是否借用了同一个对象?
- c# - 如何将模板导入我的 ASP.NET 项目(Visual Studio 2013)
- javascript - 如何在 React 中实现 Cloudinary 上传小部件?
- c# - triggerzone 每帧读取同一个对象
- conv-neural-network - 训练期间如何处理损失和验证的 NaN 和 0
- ansible - 当条件与 Ansible
- python-3.x - 在 Python3.7.1 中使用 cv2.imread 从 Opencv3 读取 png 图像,黑色窗口根本没有像素
- php - 我正在检查一个表的行的值,并尝试将该表的另一个值导入另一个表
- r - QAP分析如何保证行名和列名顺序一致