一、名词概念
1、XSS:跨站脚本攻击,是一种在web应用中的计算机安全漏洞,用户可以利用它将恶意代码植入到页面中。
2、CSRF:跨站请求伪造,攻击者可以通过一些技术手段欺骗用户的浏览器去访问一个用户曾经认证过的网站并执行一些恶意操作。
3、同源策略:浏览器的安全策略,发起请求的浏览器的url,与目标服务器的url,需要<域名,端口,协议>都相同,才可以称为同源。
4、CORS:跨域资源共享,允许不同的源从服务器读取数据。
二、简单请求与非简单请求
1、简单请求,需要同时满足两个条件:
①请求方式是三者之一:<HEAD>,<GET>,<POST>。
②请求头只包含以下几种字段:<Accept>,<Accept-Language>,<Content-Language>,<Last-Event-ID>,<Content-Type>。
- Content-Type只限于三个值:
-- :application/x-www-form-urlencoded。
-- :multipart/form-data。
-- :text/plain。
2、非简单请求:不满足简单请求条件就是非简单请求,非简单请求会发送两次,一次OPTIONS请求,一次真正的请求。
3、如果用POST方式发送json格式的数据,即为非简单请求。
三、后端开启CORS
1、编写中间件,处理响应:
from django.contrib.auth.middleware import MiddlewareMixin class NewCorsMiddle(MiddlewareMixin): def process_response(self, request, response): response['Access-Control-Allow-Origin'] = '*' if request.method == "OPTIONS": response["Access-Control-Allow-Headers"] = "*" return response
2、配置中加入中间件:'xxx.xxx.NewCorsMiddle'。
四、使用第三方中间件
1、下载安装:pip install django-cors-headers。
2、配置中注册app:'corsheaders'。
3、配置中加入中间件:'corsheaders.middleware.CorsMiddleware'。
4、配置中添加:
CORS_ORIGIN_ALLOW_ALL = True CORS_ALLOW_METHODS = ( 'DELETE', 'GET', 'OPTIONS', 'PATCH', 'POST', 'PUT', 'VIEW', ) CORS_ALLOW_HEADERS = ( 'authorization', 'content-type', )