oa考勤管理系统解决方案,考勤系统操作流程
653
2022-05-29
1.浏览器的同源策略
同源策略是浏览器的一个安全功能,不同源的客户端脚本(js文件)在没有明确授权的情况下,不能读写对方资源。只有同一个源的脚本赋予dom、读写cookie、session、ajax等操作的权限。 所以xyz.com下的js脚本采用ajax读取abc.com里面的文件数据是会被拒绝的。
另外同源策略只对网页的HTML文档做了限制,对加载的其他静态资源如javascript、css、图片等仍然认为属于同源。
同源策略限制了从同一个源加载的文档或脚本如何与来自另一个源的资源进行交互。这是一个用于隔离潜在恶意文件的重要安全机制。
url由协议、域名、端口和路径组成,如果两个url的协议、域名和端口相同,则这两个url是同源的。
举例来说,http://www.example.com/dir/page.html这个网址,协议是http://,域名是www.example.com,端口是80(默认端口可以省略)。它的同源情况如下。
1. 同源策略的目的,是为了保证用户信息的安全,防止恶意的网站窃取数据。 2.页面中的链接,重定向以及表单提交是不会受到同源策略限制的。 3.跨域资源的引入是可以的。但是js不能读写加载的内容。如嵌入到页面中的,,,
2.CORS跨域
Cross-Origin Resource Sharing(CORS)跨来源资源共享是一份浏览器技术的规范,提供了 Web 服务从不同域传来沙盒脚本的方法,以避开浏览器的同源策略,是 JSONP 模式的现代版。与 JSONP 不同,CORS 除了 GET 要求方法以外也支持其他的 HTTP 要求。另一方面,JSONP 可以在不支持 CORS 的老旧浏览器上运作。现代的浏览器都支持CORS。
我们使用django-cors-headers来解决后端对跨域访问的支持。
使用django-cors-headers扩展:
安装
pip install django-cors-headers
添加应用
INSTALLED_APPS = ( ... 'corsheaders', ... )
中间层设置
MIDDLEWARE = [ 'corsheaders.middleware.CorsMiddleware', ... ]
添加白名单
# CORS CORS_ORIGIN_WHITELIST = ( '127.0.0.1:8080', 'localhost:8080', 'www.meiduo.site:8080', 'api.meiduo.site:8000' ) CORS_ALLOW_CREDENTIALS = True # 允许携带cookie
①凡是出现在白名单中的域名,都可以访问后端接口
②CORS_ALLOW_CREDENTIALS 指明在跨域访问中,后端是否支持对cookie的操作。
3.跨域实现流程
浏览器会第一次先发送options请求询问后端是否允许跨域,后端查询白名单中是否有这两个域名
如果域名在白名单中则在响应结果中告知浏览器允许跨域
浏览器第二次发送post请求,携带用户登录数据到后端,完成登录验证操作
Ajax Django
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。