解决django4.0 跨域报 Cross-Origin Opener Policy错误

错误:The Cross-Origin-Opener-Policy header has been ignored, because the URL's origin was untrustworthy. It was defined either in the final response or a redirect.

官方文档说明:

SECURE_CROSS_ORIGIN_OPENER_POLICY

New in Django 4.0.

Default: 'same-origin'

Unless set to None, the SecurityMiddleware sets the Cross-Origin Opener Policy header on all responses that do not already have it to the value provided.

解决问题:

只需要在setting中设置为none即可解决:

SECURE_CROSS_ORIGIN_OPENER_POLICY = 'None'

### Django 中配置资源共享 (CORS) 为了使Django应用程序能够处理来自不同源的HTTP请求,即实现资源共享(CORS),可以安装并配置`django-cors-headers`中间件来简化这一过程[^3]。 #### 安装 `django-cors-headers` 通过pip工具安装该库: ```bash pip install django-cors-headers ``` #### 修改 settings.py 文件 完成安装之后,在项目的settings.py文件里做如下修改: 1. **添加应用** 将`corsheaders`加入到已安装的应用列表中: ```python INSTALLED_APPS = [ ... 'corsheaders', ... ] ``` 2. **注册中间件** 把`CorsMiddleware`放置于其他所有中间件之前以确保它能尽早拦截请求: ```python MIDDLEWARE = [ 'corsheaders.middleware.CorsMiddleware', # 放在这里很重要 ..., ] ``` 3. **设置允许访问的源** 使用`CORS_ORIGIN_ALLOW_ALL=True`可以让任何站点都能向服务器发起请求;如果只想让特定网站访问,则应关闭此选项并通过`CORS_ORIGIN_WHITELIST`或正则表达式的白名单形式指定可信任的URL模式: ```python CORS_ORIGIN_ALLOW_ALL = False CORS_ORIGIN_REGEX_WHITELIST = [ r"^https?\:\/\/localhost\:8080$", r"^https?\:\/\/192\.168\.\d{1,3}\.\d{1,3}:8080$", ] ``` 4. **扩展支持的方法与头部字段** 还可以根据需求调整哪些HTTP方法以及自定义头部被允许越资源边界传递给客户端: ```python 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', ) ``` 5. **启用凭证共享** 如果希望浏览器发送认证信息(如Cookies),那么还需要开启凭证共享功能,并且此时只接受被列入白名单内的原点发出的安全连接: ```python CORS_ALLOW_CREDENTIALS = True ``` 以上就是针对Django项目实施CORS策略的主要步骤。按照上述指南操作后,应该就可以有效解决因缺少`Access-Control-Allow-Origin`响应头而导致的前端无法正常获取API数据的问题了。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值