前后端对接接口时候遇到的跨域问题

什么是跨域

跨域是指从一个域名的网页去请求另一个域名的资源。比如从http://www.baidu.com/页面去请求google.com的资源。跨域的严格一点的定义是:只要协议,域名,端口有任何一个的不同,就被当成是跨域。
之所以要限制跨域访问,是因为如果一个网页可以随意地访问另外一个网站的资源,那么就有可能在客户完全不知情的情况下出现安全问题,比如下面的两种跨域攻击:

AJAX同源策略

用户访问www.mybank.com ,登陆并进行网银操作,这时cookie啥的都生成并存放在浏览器
用户突然想起件事,并迷迷糊糊地访问了一个邪恶的网站 www.xiee.com
这时该网站就可以在它的页面中,拿到银行的cookie,比如用户名,登陆token等,然后发起对www.mybank.com 的操作。
如果这时浏览器不予限制,并且银行也没有做响应的安全处理的话,那么用户的信息有可能就这么泄露了。

DOM同源策略

做一个假网站,里面用iframe嵌套一个银行网站 http://mybank.com
把iframe宽高啥的调整到页面全部,这样用户进来除了域名,别的部分和银行的网站没有任何差别。
这时如果用户输入账号密码,我们的主网站可以跨域访问到http://mybank.com的dom节点,就可以拿到用户的输入了,那么就完成了一次攻击。

后台允许跨域请求的方法:

self.set_header(“Access-Control-Allow-Origin”, http_origin) #http_origin为指定域名
self.set_header(“Access-Control-Allow-Credentials”, “true”) #允许请求携带cookie
self.set_header(“Access-Control-Allow-Methods”, "")
self.set_header(“Access-Control-Allow-Headers”, “Content-Type,Accept,Authorization”)
self.set_header(“Access-Control-Max-Age”, “86400”)
tips:如果Access-Control-Allow-Origin没有设置特定域名而是设定为
的话,Access-Control-Allow-Credentials会失效,即无法携带第三方请求,所有设定为*的话只能接受不带cookie的跨域请求

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值