携带请求头解决跨域的方法_解决跨域请求问题

a5454a797038ef589291582fd51e20ce.png

1 跨域请求

在构建分布式系统时,将门户系统(负责前端页面展示的控制器)和获取数据的系统(从数据库获取资料)分开。在开发过程中,会遇到跨域请求问题。

eab6c79ef170401308bc1b647bb1b110.png

什么是跨域请求

跨域是指一个域下的文档或脚本试图去请求另一个域下的资源,这里跨域是广义的。

  1. 资源跳转: A链接、重定向、表单提交
  2. 资源嵌入: <link><script><img><frame> 等 dom 标签,还有样式中background:url()、@font-face()等文件外链
  3. 脚本请求: js 发起的 ajax 请求、dom 和 js 对象的跨域操作等

其实我们通常所说的跨域是狭义的,是由浏览器同源策略限制的一类请求场景。主要特征有两种:

  1. 域名不相同,即两个不同的应用

6f2b11880538ca21dbd005b82af3e604.png

2. 域名相同,但是端口不同,即同一个应用中的不同子系统

2a82128606712455c6941259136280ee.png

解决方式

想要从数据系统的接口中获得数据,我常用的有两种方式:

  • 若使用前端 ajax 获取数据,常用的解决方式是使用 jsonp 实现跨域请求
  • 若从后台程序中获取数据,使用 HttpClient

2 jsonp

通常为了减轻 web 服务器的负载,我们把js、css,img 等静态资源分离到另一台独立域名的服务器上,在 html 页面中再通过相应的标签从不同域名下加载静态资源,这种行为被浏览器允许。基于此原理,我们可以把需要的数据封装成一段 js 代码。

实现方式

jsonp 只能使用 get 请求,前台请求时,指定回调函数名,后台系统将数据封装成 js 代码,将数据放到参数里面:

<
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值