首页 > 其他 > 详细

3 django cors 跨域

时间:2021-05-04 23:10:39      阅读:23      评论:0      收藏:0      [点我收藏+]

1 浏览器请求

浏览器将CORS请求分成两类:
1 简单请求(simple request)
2 非简单请求(not-so-simple request)

如何定义简单请求和非简单请求?

  只要同时满足以下两大条件,就属于简单请求。

  1 请求方法是以下三种方法之一:
  HEAD
  GET
  POST

  2 HTTP的头信息不超出以下几种字段:

  Accept
  Accept-Language
  Content-Language
  Last-Event-ID
  Content-Type:只限于三个值application/x-www-form-urlencoded、multipart/form-data、text/plain
  凡是不同时满足上面两个条件,就属于非简单请求


  简单请求和非简单请求的区别?

  1 简单请求:一次请求
  2 非简单请求:两次请求,在发送数据之前会先发一次请求用于做“预检”,只有"预检"通过后才再发送一次请求用于数据传输。


  什么是预检?

 预检其实做检查,检查如果通过则允许传输数据,检查不通过则不再发送真正想要发送的消息。请求方式:OPTIONS


 如何预检?

  1 如果复杂请求是PUT等请求,则服务端需要设置允许某请求,否则预检不通过
  Access-Control-Request-Method
  2 如果复杂请求设置了请求头,则服务端需要设置允许某请求头,否则预检不通过
  Access-Control-Request-Headers

 

2 django-cors-headers

1 安装
pip install django-cors-headers

2 setting中设置cors
- 添加app
INSTALLED_APPS = [
 corsheaders,
]
- 设置中间件
MIDDLEWARE_CLASSES = [
 corsheaders.middleware.CorsMiddleware,
 django.middleware.common.CommonMiddleware,
]
- 设置可访问域名
CORS_ORIGIN_WHITELIST = (
 127.0.0.1:8080,
 localhost:8080,
)
或 CORS_ORIGIN_ALLOW_ALL = True // 全部域名均支持跨域
- 是否支持cookie
CORS_ALLOW_CREDENTIALS = False
- 支持的方法
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,
)
- options缓存时间
CORS_ALLOW_MAX_AGE = 86400 // 默认一天时间(单位:秒)
- 自定义响应头
CORS_EXPOSE_HEADERS = []

 

3 django cors 跨域

原文:https://www.cnblogs.com/lizitestdev/p/14730023.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!