django学习笔记05 跨域
  2U15lpegzuxq 2023年11月26日 19 0

跨域指的是:浏览器不能执行其他网站的脚本,从一个域名的网页去请求另一个域名的资源时,域名、端口、协议任一不同,都是跨域。跨域是由浏览器的同源策略造成的,是浏览器施加的安全限制。a页面想获取b页面资源,如果a、b页面的协议、域名、端口、子域名不同,所进行的访问行动都是跨域的。

在DJANGO里 解决这个问题需要装一个插件

#安装第三方应用

pip3 install django-cors-headers



MIDDLEWARE = [
    'django.middleware.security.SecurityMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
    
    'corsheaders.middleware.CorsMiddleware',# 跨域
        
        
    'django.middleware.common.CommonMiddleware',
    #'django.middleware.csrf.CsrfViewMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
    'django.middleware.clickjacking.XFrameOptionsMiddleware',
]

以下是设置的一些方法


INSTALLED_APPS = [
	...,
	'corsheaders',
	'rest_framework',
]

MIDDLEWARES = [
	...,
	'corsheaders.middleware.CorsMiddleware', #注意在common的上方,官方建议
    'django.middleware.common.CommonMiddleware','
]


#允许前端请求携带Cookie(含sessionid)
CORS_ALLOW_CREDENTIALS = True  #会话保持必须

# CORS_ORIGIN_ALLOW_ALL = True  #允许所有的源跨域到django
CORS_ORIGIN_WHITELIST = (
    'http://127.0.0.1:5000', #格式严格
) #[]也可以

#非必须
CORS_ALLOW_METHODS = (
    "GET",
    "POST",
    "PUT",
    "DELETE",
    'OPTIONS'
    'PATCH',
    'VIEW'
)

#非必须
CORS_ALLOW_HEADERS = (
    "XMLHttpRequest",
    'token',
    'X_FILENAME',
    'accept',
    'accept-encoding',
    'authorization',
    'content-type',
    'dnt',
    'origin',
    'user-agent',
    'x-csrftoken',
    'x-requested-with',
)
#暴露响应头,xhr才可以拿到响应头
CORS_EXPOSE_HEADERS = (
	'token',
)
#缓存options请求
CORS_PREFLIGHT_MAX_AGE = 86400  #秒
【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月26日 0

暂无评论

推荐阅读
2U15lpegzuxq