http跨域

什么是跨域?

所有支持Javascript的浏览器都会使用同源策略这个安全策略。

同源策略,它是由Netscape提出的一个著名的安全策略。
现在所有支持JavaScript 的浏览器都会使用这个策略。所谓同源是指,域名,协议,端口相同。
当一个浏览器的两个tab页中分别打开百度和谷歌的页面
当一个百度浏览器执行一个脚本的时候会检查这个脚本是属于哪个页面的
即检查是否同源,只有和百度同源的脚本才会被执行。

举个简单的例子: 能过localhost:8888端口请求网页index.html,并且在该网页中又向localhost:9999端口发出了请求,这里就被视为是跨域,一般默认情况下这种请求是不被允许了,解决这种限制的办法是在response的head中加入’Access-Control-Allow-Origin’:’*’

跨域问题被谁限制了呢

其实这个限制是浏览器限制的,如果你通过CURL来坊问的话是没有问题的

跨域问题也不是只有’Access-Control-Allow-Origin’:’*'才能解决
<link/> <image/> <script/><iframe/>等这些带src的标签,在其src中带入跨域链接也都是可以的,这种跨域方式叫做jsonp, 请大家参见百度百科:https://baike.baidu.com/item/jsonp/493658

‘Access-Control-Allow-Origin’:’*’ 是不安全的

‘*’表示所有网站都可以坊问,可以限定一下,写成:‘Access-Control-Allow-Origin’:‘http:localhost:8888’

跨域限制以及预请求验证

允许方法 :GET/POST/HEAD
允许content-type : text/plain , multipart/form-data , application/x-www-form-urlencoded
允许请求头 :Accept , Accept-Language , Content-Language , Content-type
具体请参见: https://fetch.spec.whatwg.org/#cors-safelisted-request-header

若想突破这些跨域的限制可以使用预请求的方式:
允许PUT , DELETE ,POST这些方法也可以域请求
‘Access-Control-Allow-Methods’ : ‘PUT , DELETE , POST’
允许test-header-1自定义请求头
‘Access-Control-Allow-Headers’ : ‘test-header-1’
预请求1000秒内生效,一次预请求后的1000秒内不需要再次预请求
‘Access-Control-Max-Age’ : ‘1000’

CSRF攻击
这是一种伪造真实用户来做非法操作的攻击方式,攻击手段举例:
一、张三在能过浏览器坊问了A网站,然后在其网页上输入了他的帐号及密码并成功登陆了用户页面
二、浏览器本地缓存了张三的用户信息cookie
三、张三坊问B网站,B网站返回攻击必的代码,并获取张在A网站中的cookie
四、B网站利用A用户的cookie信息,向A服务发起伪造请求

所以跨域的限制可以防范此类问题

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值