当前位置:网站首页 > 云计算与后端部署 > 正文

前后端跨域解决方案(前后端分离如何解决跨域)



前后端分离跨域问题的几种解决方案

一、为什么会出现跨域问题?

二、什么是跨域?

一个请求url的协议、域名、端口三者之间任意一个与当前页面url不同即为跨域。

当前页面url 被请求页面url 是否跨域 原因 http://www.test.com/ http://www.test.com/index.html 否 同源(协议、域名、端口号相同) http://www.test.com/ https://www.test.com/index.html 跨域 协议不同(http/https) http://www.test.com/ http://www.baidu.com/ 跨域 主域名不同(test/baidu) http://www.test.com/ http://blog.test.com/ 跨域 子域名不同(www/blog) http://www.test.com:8080/ http://www.test.com:7001/ 跨域 端口号不同(8080/7001)
  • 1.安全性:浏览器要防止当前站点的私密数据不会向其他站点发送 如当前站点的Cookie,LocalStorage,IndexDb不会被发送到其他站点或被其他站点脚本读取到无法跨域获取Dom,无法发送Ajax请求。
  • 2.可用性:大型站点的图片,音视频等资源,希望部署在独立服务器上,为缓解当前服务的压力,开放某些特定的方式,访问非同源站点 如:等,可以同src属性跨域访问允许跨域提交表单/或重定向请求。

三、解决方案

1.后台服务端解决方案
  • 方法一:@CrossOrigin
 
  
  • 方法二:
 
  
2.Nginx代理服务器,反向代理接口请求
 
  
3.jsonp方式
  • JSONP是怎么产生的:

服务端提供的js脚本是动态生成的,这样调用者可以传一个参数过去告诉服务端“我想要一段调用XXX函数的js代码,请你返回给我”,于是服务器就可以按照客户端的需求来生成js脚本并响应了。

  • JS调用实例:
 
  
 
  

我们看到,传递给flightHandler函数的是一个json,它描述了航班的基本信息。运行一下页面,成功弹出提示窗口,jsonp的执行全过程顺利完成!

  • JQuery调用实例:
 
  

是不是有点奇怪?为什么我这次没有写flightHandler这个函数呢?而且竟然也运行成功了!哈哈,这就是jQuery的功劳了,jquery在处理jsonp类型的ajax时(还是忍不住吐槽,虽然jquery也把jsonp归入了ajax,但其实它们真的不是一回事儿),自动帮你生成回调函数并把数据取出来供success属性方法来调用,是不是很爽呀?

到此这篇前后端跨域解决方案(前后端分离如何解决跨域)的文章就介绍到这了,更多相关内容请继续浏览下面的相关推荐文章,希望大家都能在编程的领域有一番成就!

版权声明


相关文章:

  • redis的端口(redis 默认端口)2026-03-16 17:36:05
  • redis 默认端口(redis默认端口是什么)2026-03-16 17:36:05
  • xps客服电话技术支持(xps售后服务电话)2026-03-16 17:36:05
  • 服务器部署方案(服务器部署项目流程)2026-03-16 17:36:05
  • 服务器部署命令(服务器部署命令怎么用)2026-03-16 17:36:05
  • 操作系统基础课后题答案(操作系统课后题答案第二版)2026-03-16 17:36:05
  • redis端口号怎么修改(redis修改密码和端口)2026-03-16 17:36:05
  • 双系统卸载一个系统有影响吗(安装过双系统卸载有后遗症吗)2026-03-16 17:36:05
  • 华为模拟器ip配置命令(华为模拟器设置路由器端口ip)2026-03-16 17:36:05
  • 批处理删除文本最后的语句(批处理删除txt的中文内容)2026-03-16 17:36:05
  • 全屏图片