前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Ajax 如何解决跨域问题

Ajax 如何解决跨域问题

作者头像
青梅煮码
发布2023-01-12 15:05:31
4380
发布2023-01-12 15:05:31
举报
文章被收录于专栏:青梅煮码青梅煮码青梅煮码

在 Web 开发过程中经常使用 Ajax 来异步的获取数据,尤其是在前后端分离的架构中基本上都是通过 Ajax 获取数据,渲染页面都由前端浏览器来完成。通常这种前后端分离的架构,对于前端开发者来说已经像开发客户端 App 一样的开发 Web,获取数据也有专门封装好的 RESTful Client 组件来获取数据,不过它的原理也是使用了浏览器的 XMLHttpRequest 这个对象来实现异步请求数据。

但是当在域 domain-a.com 下想要通过 Ajax 来请求域 domain-b.com 的数据时,会遇到跨域的问题,通常这种跨域是不被浏览器允许的,如何解决呢?

JSONP

JSONP 是一个解决方案,它的原理:

  • 在 HTML 中创建一个<script src=””>标签,其中src属性中的地址就是接口地址;
  • 并创建好回调方法,把得到数据后的逻辑写到这个方法中;
  • 接口地址返回一段 JavaScript ,其内容为执行回调方法并传入 JSON 数据;
  • 在创建<script src=””>标签的同时监听onload或者onreadystatechange事件;
  • 当这一段 JavaScript 下载完成后,立即运行该段 JavaScript;
  • 此时已经拿到了数据,并开始执行处理这部分数据的逻辑。

当然这种方式巧妙的利用了外部的引用脚本来避开跨域,但是它只能 GET,不能进行 POST、PUT、DELETE 等 HTTP 方法,是一个阉割版的跨域方案。

Flash

这种方式采用浏览器插件来解决跨域问题,不过 Flash 面对强大的 HTML5 逐渐消失在历史的舞台,这种方式不太建议使用。如果有兴趣的同学可以看相关文档点这里。

CORS

CORS 定义一种跨域访问的机制,可以让 Ajax 实现跨域访问。CORS 允许一个域上的网络应用向另一个域提交跨域 Ajax 请求。实现此功能非常简单,只需由服务器发送一个响应标头Access-Control-Allow-Origin:*即可。

Proxy

代理的方式,通过代理将原本发送到另外一个域名的请求,发送到当前域下的某个 URL,通过服务器端转发到目标服务器,这样就不存在跨域问题了。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019-11-10 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档