一.为什么会有跨域问题?

1.浏览器限制

2.跨域

域名,端口,协议任意一个不相同;

3.XHR(XMLHttpRequest)请求

满足以上三个条件才会触发跨域,任意一个不满足就不算是跨域;

二.解决跨域问题的方法

针对上边三中种方式,让其不满足上边的条件即可;

1.浏览器解除安全设置,这种方式需要修改客户端的浏览器,另外此种方式也不安全,不方便也不建议这样设置;

2.将后端服务使用相同的域名,端口,协议;将后端的服务暴露在相同的域名,端口,协议下就能解决该问题;

此处有两种方式进行解决,这里涉及到后端服务器的调用流程:

方法1:web server返回特定的http header,告诉浏览器,允许该域名访问;

Access-Control-Allow-Methods:对应的方法,如(GET),*允许所有

Access-Control-Allow-Origin:对应的协议,域名,端口,如(http://www.wentjiang.com),*允许所有,但是不能使用cookie,使用cookie时,需要写对应的origin

Spring应用直接使用@origincors

方法2:在nginx或者apache对后端服务做映射(反向代理),让浏览器直接通过不跨域的域名直接进行访问;

3.页面不使用XHR请求;

使用jsonp请求,jsonp是一种非官方的协议,大家约定俗成的调用方式,因为页面可以加载不同源的js代码,所以jsonp就将普通的请求后端的请求改造成请求js的请求,请求服务器的结果为原本请求接口的数据;但这种方式不建议去使用;

jsonp有以下几个弊端,1.服务器需要支持jsonp,需要添加添加callback函数名及修改固定的格式,2.只支持get请求,不能使用其他请求去调用,3.发出的不是XHR请求;

三.跨域问题的常见形式

跨域分为简单跨域和复杂跨域,

简单跨域会直接请求服务器端,并根据服务端返回的头文件进行判断;

复杂跨域浏览器会先向服务器端发出options请求,判断服务器端是否允许跨域,允许之后才进行正常的请求操作;

web开发中的跨域问题相关推荐

  1. Spring boot 和Vue开发中CORS跨域问题

    1. 遇到的问题: 我用spring-boot 做Rest服务,Vue做前端框架,用了element-admin-ui这个框架做后台管理.在调试的过程中遇到了如下错误: Preflight respo ...

  2. 关于flex开发中的跨域访问问题

    1,一次偶然的机会碰到这个问题了,flex有跨域访问问题,但是,imgage.soure='其它域名地址是可以的'.能显示出来,为什么? 不是说有跨越访问的问题么,其实flash说的跨域访问问题,不是 ...

  3. (转)HTML5开发中Access-Control-Allow-Origin跨域问题

    今天准备通过JavaScript的方式调用问说问答的内容,由于使用的不同的二级域名,遇到了一个跨域问题,虽然可以使用JSON或者XML来解决这个问题,但是我们可以通过Access-Control-Al ...

  4. 前端开发中的跨域问题及解决方案

    什么是跨域报错? 为什么会出现浏览器跨域报错? 简单来讲就是:不同源的ajax请求,具体来说满足以下三个条件就会出现跨域错误 1. 请求响应双方url不同源. 双方url:发出请求所在的页面 与 所请 ...

  5. Vue---vue-cli 中的proxyTable解决开发环境中的跨域问题

    Vue---vue-cli 中的proxyTable解决开发环境中的跨域问题 参考文章: (1)Vue---vue-cli 中的proxyTable解决开发环境中的跨域问题 (2)https://ww ...

  6. javascript中实现跨域的方式总结

    js中的跨域请求应该也算是一个重点,具体什么叫跨域,在这里我就不展开了,可以查一下浏览器的同源策略和跨域的定义.原来只知道常用的jsonp和document.domain这两种方式,这几天学习了一下其 ...

  7. Spring Security系列教程解决Spring Security环境中的跨域问题

    原创:千锋一一哥 前言 上一章节中,一一哥 给各位讲解了同源策略和跨域问题,以及跨域问题的解决方案,在本篇文章中,我会带大家进行代码实现,看看在Spring Security环境中如何解决跨域问题. ...

  8. yii2 跨域请求配置_如何在SpringBoot应用中实现跨域访问资源和消息通信?

    允许跨域访问 CORS ( Cross Origin Resource Sharing,跨域资源共享)机制允许Web应用服务器进行跨域访问控制,从而使跨域数据传输得以安全进行.浏览器支持在API容器中 ...

  9. 爆破专栏丨Spring系列教程解决Spring Security环境中的跨域问题

    上一章节中,一一哥 给各位讲解了同源策略和跨域问题,以及跨域问题的解决方案,在本篇文章中,我会带大家进行代码实现,看看在Spring Security环境中如何解决跨域问题. 一. 启用Spring ...

最新文章

  1. 利用oc门或od门实现线与_景县专业门球场专用人造草坪甄选博翔远
  2. ASP.NET MVC3 部署的前期工作
  3. linux分文件编程、静态库与动态库
  4. mysqldatadir 转移
  5. vs 中使用32 位mysql_vs2010连接mysql数据库(含win32和x64两种平台)
  6. 歪枣网数据库设计-千万级别海量数据查询效率优化
  7. mysql 5.7 刘,深度解析MySQL 5.7之中文全文检索
  8. 安装activex手机控件_86/BRZ 免“油饼”安装 Defi 机油压力表
  9. STEP 7新建梯形图程序,S7-plcsim使用
  10. 自动旁注并多进程调用wwwscan扫描旁注结果的python脚本。
  11. 如何设置局域网共享打印机及问题解决
  12. php产品管理系统,企业商品进销存管理系统
  13. 安装微软的消息队列服务器,MSMQ消息队列的安装、启用
  14. 简易数字时钟 按键可校准
  15. 微软梁念坚:六个新潮流推动IT行业发展
  16. 计算机视觉之--使用opencv生成简笔画小视频
  17. HDU - 2014 青年歌手大奖赛_评委会打分
  18. 居然有人问,软件测试算是程序员吗?
  19. 华为鸿蒙如何内测,华为鸿蒙内测体验曝光,与EMUI有明显区别
  20. ChinaSkills-网络系统管理(2022改革Linux部分SDN软件定义网络[OpenDayLight]CentOS7.9安装运行预测)

热门文章

  1. 环境变量path中,加载顺序,先加在配置在最前面的,如果找到不继续往下寻找。
  2. ITA 测试时之数据准备(大量数据导入与导出)(主键的最高位最好有值,而不是0)。
  3. 【Hive】条件函数
  4. 解决visual studio换行(回车键)不能代码补全问题
  5. Django-djangorestframework-异常模块-源码及自定义异常
  6. 数据异常值分析和处理
  7. nginx配置与常见错误解决方法
  8. postgresql查看死锁及解决方法
  9. 【转】implicit declaration of function 这种警告问题的原因及解决方法
  10. 在Swift中向数组添加元素