同源策略/SOP(Same origin policy)是一种约定,由Netscape公司1995年引入浏览器,它是浏览器最核心也最基本的安全功能,如果缺少了同源策略,浏览器很容易受到XSS、CSFR等攻击。所谓同源是指"协议+域名+端口"三者相同,即便两个不同的域名指向同一个ip地址,也非同源。

同源策略限制以下几种行为: 1.) Cookie、LocalStorage 和 IndexDB 无法读取 2.) DOM 和 Js对象无法获得 3.) AJAX 请求不能发送

 
#处理方法:
# 1.通过JSONP跨域
# JSON是一种数据交换格式
# JSONP是一种非官方的跨域数据交互协议
# jsonp是包含在函数调用中的json
# script标签不受同源策略的影响,手动创建一个script标签,传递URL,同时传入一个回调函数的名字
# 服务器得到名字后,返回数据时会用这个函数名来包裹住数据,客户端获取到数据之后,立即把script标签删掉
# 2.cors:跨域资源共享
# 使用自定义的HTTP头部允许浏览器和服务器相互通信
# 1.如果是简单请求,直接设置允许访问的域名:
# 允许你的域名来获取我的数据                         
# response['Access-Control-Allow-Origin'] = "*"
# 2.如果是复杂请求,首先会发送options请求做预检,然后再发送真正的PUT/POST....请求
# 因此如果复杂请求是PUT等请求,则服务端需要设置允许某请求
# 如果复杂请求设置了请求头,则服务端需要设置允许某请求头
#简单请求:
# 一次请求 
#非简单请求:
# 两次请求,在发送数据之前会先发一次请求用于做“预检”,
# 只有“预检”通过后才再发送一次请求用于数据传输。
 
#只要同时满足以下两大条件,就属于简单请求。                             
# (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 
#JSONP和CORS:
# 1.JSONP只能实现GET请求,而CORS支持所有类型的HTTP请求
# 2.jsonp需要client和server端的相互配合
# 3.cors在client端无需设置,server端需要针对不同的请求,来做head头的处理

CORS是一个W3C标准,全称是"跨域资源共享"(Cross-origin resource sharing)。它允许浏览器向跨源(协议 + 域名 + 端口)服务器,发出XMLHttpRequest请求,从而克服了AJAX只能同源使用的限制

pip install django-cors-headers
#安装cors

  

INSTALLED_APPS = [
...
'corsheaders',
...
] MIDDLEWARE_CLASSES = (
...
'corsheaders.middleware.CorsMiddleware',
'django.middleware.common.CommonMiddleware', # 房租common前面
...
)
#跨域增加忽略
CORS_ALLOW_CREDENTIALS = True
CORS_ORIGIN_ALLOW_ALL = True
CORS_ORIGIN_WHITELIST = (
'*'
) 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',
)
#增加settings配置

  

最新文章

  1. MagicalRecord 多表关联数据操作
  2. 在centos安装docker
  3. 2014-9-17二班----7 web project
  4. HDU 5744 Keep On Movin
  5. ASP.NET MVC 基础
  6. DataGrid( 数据表格) 组件[8]
  7. POJ 3691 & HDU 2457 DNA repair (AC自己主动机,DP)
  8. ios 调用webservice整理
  9. mysql、sqlserver数据库常见数据类型对应java中的的类型探究
  10. 003.ASP.NET Core tutorials--【Asp.net core 教程】
  11. JDBCTemplate
  12. C语言中无符号数和有符号数之间的运算
  13. 201421123042 《Java程序设计》第14周学习总结
  14. c++ 单元测试框架 gmock 深度剖析
  15. java.lang.IllegalStateException: Illegal access
  16. 【xsy1116】数学题 奥数题
  17. 【洛谷】NOIP提高组模拟赛Day2【动态开节点/树状数组】【双头链表模拟】
  18. 求csdn博客优良编辑方法
  19. 化学绘图软件ChemDraw真的什么都能干!
  20. PAT——乙级1015/甲级1062:德才论

热门文章

  1. 51nod 1022 石子归并 V2 —— DP四边形不等式优化
  2. java语言中Object对象的hashCode()取值的底层算法是怎样实现的
  3. UEditor上传文件的默认地址修改
  4. Spring Boot2.0之 原理—创建内置Tomcat容器
  5. PS 滤镜— —图像偏移
  6. <十七>UML核心视图动态视图之时序图
  7. poj1475 Pushing Boxes[双重BFS(毒瘤搜索题)]
  8. 【Lintcode】135.Combination Sum
  9. 洛谷 1979 华容道——最短路+dp
  10. tyvj1124花店橱窗——有限制的DP