解决跨域!

跨域问题与解决

今天做项目的时候遇见了一个跨域的小问题,来和大家分享一下。

什么是跨域

所谓的跨域指的是浏览器不能执行其他网站的脚本,他是由浏览器的(同源策略)导致的,(同源策略下文会提到)是浏览器对于javascript 施加的安全限制。
同源策略指的是协议、域名、端口号都要相同,其中有一项不相同就会产生跨域

跨域有很多种方法,由于今天时间比较紧,咱们就捡比较常用的来说说。

1.用jsonp来解决跨域

Jsonp实现原理 :script标签不受浏览器同源策略的影响,允许跨域引用资源,因此可以通过动态创建script标签来利用src属性进行跨域。

jsonp实现方式:动态创建script标签,通过回调函数处理请求结果

jsonp的优点:1)可以跨域 2)兼容性好

Jsonp的缺点:1) 只能支持GET 请求,Jsonp在调用失败时不会返回各种http状态码

2)安全性 如果提供jsonp的服务被人控制,那么所有调用这个jsonp的网站都存在漏洞

2.通过设置请求头来允许跨域(CORS方式)

CORS(跨域资源共享)定义一种跨域访问的机制,可以让ajax实现跨域访问,CORS允许一个域上的网络应用向另一个域提交跨域ajax请求,只需由服务器发送一个响应头即可

header(“Access-control-Allow-origin:*”) 允许任何资源
header(“Access-control-Allow-origin:http://loacl.com”)只允许来自域名http://loacl.com的请求
header(“Access-control-Allow-origin-method:Post,Get”)
允许访问的方式

3.利用Nginx反向代理解决跨域

反向代理指的是代理服务器接受Internet上的连接请求,然后将请求转发给内部网络上的服务器,并将服务器上得到的结果转发给内部网络上的服务器,并将服务器上得到的结果返回给Internet上请求连接的客户端,此时代理服务器对外就表现为一个服务器,反向代理服务器对于客户端而言它就像是原始服务器,这就是一个代理模式,相当于绕过了浏览器端,自然就不存在跨域。

这就是我们做项目时候比较常用的跨域方式。今天先言到这。下次再说。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值