【Django】中的跨域解决办法 基于后端的跨域解决方案

Django中的跨域解决办法 基于后端的跨域解决方案

何为跨域?
在浏览器中,只要发送请求的URL的协议、域名、端口号这三者中的任意一个与当前页面地址的协议、域名、端口号不同,则称之为跨域。当发生这种情况时,浏览器的同源策略会报异常并拒绝访问。而前后端分离的开发,前端和后端由不同的开发,所以前后端应用可能不会使用同一个协议、域名、端口号。那么这时候就需要在后端做一些配置,使URL能够跨域正常访问。


在这里插入图片描述



1 Django中的跨域解决办法

1.1 安装django-cors-headers

pip install django-cors-headers

1.2 设置全局配置文件

项目全局配置文件settings.py中,注册corsetheaders应用:

INSTALLED_APPS = [
	...,
	'corsheaders'
]

设置中间件MIDDLEWARE:

MIDDLEWARE = [
	'coreheaders.middleware.CorsMiddleware',
	'django.middleware.common.CommonMiddleware',
	...
]

其中,coreheaders.middleware.CorsMiddleware,中间件需要放置在首位

继续添加Cookie的配置项:

CORS_ALLOW_CREDENTIALS = True   # 允许跨域时携带cookie
CORS_ORIGIN_ALLOW_ALL = True  # 指定所有域名都可以访问后端接口

上述配置完成,从前端访问后端接口就不会有跨域提示了。


2 如果还是不行

如果还是不行,就在项目全局配置文件settings.py中,设置跨域访问白名单,同时将允许跨域的请求方法以及请求头参数都放进去:

# ...

# 跨域访问白名单
CORS_ORIGIN_WHITELIST = (
    'http://10.8.32.203',
    'http://10.8.32.203:8003',
    'http://10.8.32.203:8002',
    'http://10.8.3.20',
    'http://10.8.3.20:8003',
    'http://10.8.3.20:8002',
)

CORS_ORIGIN_ALLOW_ALL = True
CORS_ALLOW_CREDENTIALS = True  # 允许跨域时携带cookie

# 允许跨域的请求方法
CORS_ALLOW_METHODS = (
    'DELETE',
    'GET',
    'OPTIONS',
    'PATCH',
    'POST',
    'PUT',
    'VIEW',
)

# 请求头中可携带的参数
CORS_ALLOW_HEADERS = (
    'XMLHttpRequest',
    'X_FILENAME',
    'accept-encoding',
    'authorization',
    'content-type',
    'dnt',
    'origin',
    'user-agent',
    'x-csrftoken',
    'x-requested-with',
    'Pragma',
    'X-HTTP-Method-Override',
    'Access-Control-Allow-Origin',
    'Access-Control-Allow-Credentials',
    'Access-Control-Allow-Methods',
    'json',
    'csrfmiddlewaretoken'
)
  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

勇敢牛马 不怕困难

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值