依靠前端解决跨域问题的几种方式

.伊泽瑞尔      2022-02-17     233

关键词:

首先我们先了解下跨域的概念:

  出于浏览器的同源策略限制。同源策略(Sameoriginpolicy)是一种约定,它是浏览器最核心也最基本的安全功能,如果缺少了同源策略,则浏览器的正常功能可能都会受到影响。可以说Web是构建在同源策略基础之上的,浏览器只是针对同源策略的一种实现。同源策略会阻止一个域的javascript脚本和另外一个域的内容进行交互。所谓同源(即指在同一个域)就是两个页面具有相同的协议(protocol),主机(host)和端口号(port)。

jsonp:他是一个技巧,不是一门技术,利用script标签的src属性不受跨域限制,在浏览器端定义一个函数,发请求的时候把这个函数当做参数传给服务器,然后服务器把响应数据当做函数的实参返回,他只能发get请求,

cors:在服务器端设置响应头Access-Control-Allow-Origin:*,跨域资源共享,他能处理get,post请求,但是只能兼容ie8以上,

浏览器为了安全起见,采用的同源策略,,同源指的是协议,域名,端口号,必须一致,有一个不一致就是跨域,举例:没有同源的危害:钓鱼网站可以轻松拿到别的网站的dom,获取用户的关键信息,比如账号,密码

使用代理:开发环境使用proxytable正向代理解决跨域,在config文件夹的index文件中配置,比如拿一个vue项目来说:

dev: {
            proxyTable: {
                ‘/queue-admin‘: {  // 使用"/queue-admin"来代替 API头部,可随意命名
                  //target: ‘...‘,  // 源地址 本地开发的API头部
                  target: "...",  // 配置到服务器后端的API头部
                  pathRewrite: {
                    ‘^/queue-admin‘: ‘/queue-admin‘  // 路径重写,第一个与上面相同,第二个/queue-admin 为server.context-path(服务器的上下文)
                  },
                  // 以下解决https 访问问题。上面的可以访问http
                  changeOrigin: true,
                  secure: false,
                  headers: {
                    Referer: ‘...‘
                  }
                }
            }
         }
  

反向代理:在生产环境使用nginx服务器配置反向代理,nginx就相当于一个服务器,浏览器的请求先发到nginx服务器,再由nginx服务器转发请求,解决跨域,利用反向代理可以实现负载均衡:将多个请求转发到不同的服务器;

还有一种就是采用h5的postMessage方式:

targetWindow.postMessage(data, origin);//其中data是需要发送的对象,origin是目标窗口的origin。
window.addEventListener(‘message‘, handler, false);//handler的event.data是postMessage发送来的数据,event.origin是发送窗口的origin,event.source是发送消息的窗口引用。

总结:前端和前端页面之间的跨域可以用h5的postMessage解决,前端和后端的跨域最好由后端解决,当然如果是vue项目可以尝试上面的正向代理方法调试。

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

前端跨域问题一:同源策略  1.what‘sthis    所谓同源是指,域名,协议,端口相同。当浏览器运行一个JS脚本时会进行同源检测,如果不同源是不能执行的。  2.源继承    来自about:blank,javascript:和data:URLs中的内... 查看详情

解决geoserver请求跨域的几种思路,第二种思路用过

...域问题是浏览器同源安全制引起的特别常见的问题。不同前端语言针对跨域解决方法有所区别。比如Flex语言做跨域请求时,如果中间件存有跨域文件(crossdomain.xml)则可以轻松实现跨域。   而JS开发的前端,针对GET请... 查看详情

解决浏览器跨域的几种方式

  1、什么是跨域问题  在页面中使用js访问其他网站的数据时,就会出现跨域问题,比如在网站中使用ajax请求其他网站的天气、快递或者其他数据接口时,以及hybridapp中请求数据,浏览器会提  示一下错误... 查看详情

解决geoserver请求跨域的几种思路

...域问题是浏览器同源安全制引起的特别常见的问题。不同前端语言针对跨域解决方法有所区别。比如Flex语言做跨域请求时,如果中间件存有跨域文件(crossdomain.xml)则可以轻松实现跨域。   查看详情

前端跨域几种方式

...可以修改你站点上的内容,读取你的cookie,后果难以想象前端跨域的几种方式修改document.domaindocument.domain用来获取当前网页的域名,document.domain可以被赋值docum 查看详情

跨域的几种方法(代码片段)

...标签的src属性就是后端api接口的地址,并且以get的方式将前端回调处理函数名称告诉后端,后端在响应请求时会将回调返还,并且将数据以参数的形式传递回去。前端://http://127.0.0.1:8888/jsonp.htmlvarscript=document 查看详情

跨域解决的几种方案

前两天碰到一个跨域问题的处理,使用jsonp可以解决。(http://www.jb51.net/article/57889.htm)最近再整理了一下:1.jsonp。  ajax请求,dataType为jsonp。这种形式需要请求在服务端调整为返回callback([json-object])的形式。如果服务端返... 查看详情

前端设置请求头可以解决跨域问题吗

...是Access-Control-Allow-Origin:允许的域名。参考技术A不可以,前端设置代理,可以解决跨域 参考技术B需要后台支持 查看详情

跨域请求资源的几种方式

跨域请求资源的几种方式由于浏览器同源策略,凡是发送请求URL的协议、域名、端口三者之间任意一与当前页面地址不同即为跨域。(1)JSONP(jsonp跨域get请求)      这种方式主要是通过动态创建一个script... 查看详情

跨域常见问题

...里要说的是,跨域的几个场景:1、Ajax跨域  Ajax跨域跟前端没有什么关系,只是后端服务器的安全限制,但也可在前端处理。常见的处理方式分为:  1)前端处理    通过JSONP的方式,这里不细讲。大概的思路是,借助... 查看详情

关于跨域问题的几种解决方案(代码片段)

...名请求网站中,默认不允许通过ajax请求发送其他域名。解决方案:一.跨域问题:能够正常请求,但是没有办法获取到响应结果  b工程中直接在ajax访问a工程servlet1$(function()2$("#button").click(function()3//获取到文本框的值4varusername=$("... 查看详情

详解cors跨域的几种不同实现方式(代码片段)

CORS定义CORS是一个W3C标准,全称是"跨域资源共享"(Cross-originresourcesharing),它允许浏览器向跨源服务器,发出XMLHttpRequest请求,从而克服了AJAX只能同源使用的限制。提供了Web服务从不同域传来沙盒脚本的方法,以避开浏览器的... 查看详情

vue开发环境和生产环境里面解决跨域的几种方法(代码片段)

  跨域指浏览器不允许当前页面的所在的源去请求另一个源的数据。源指协议,端口,域名。只要这个3个中有一个不同就是跨域。这里列举一个经典的列子:#协议跨域http://a.baidu.com访问https://a.baidu.com;#端口跨域http://a.ba... 查看详情

web跨域解决方案1

阅读目录什么是跨域常用的几种跨域处理方法:跨域的原理解析及实现方法总结摘要:跨域问题,无论是面试还是平时的工作中,都会遇到,本文总结处理跨域问题的几种方法以及其原理,也让自己搞懂这方面的知识,走起。&nb... 查看详情

前端跨域问题各种解决方式及原理

跨域的各种解决方式及原理因为浏览器有某些安全级别的限制,例如,同源策略,所以在进行浏览器端的web应用开发的时候,经常会遇到跨域问题。同源策略:只有在同源的情况下(同域名,同协议,同端口)才能进行数据交互... 查看详情

前端提交的几种方式

   后台接收代码:@PostMapping("/post/a")publicStringpostA(Useruser)System.out.println("/post/a");System.out.println(user);returnuser.toString();@PostMapping("/post/b")publicStringpostB(@Requ 查看详情

实现前端页面跳转的几种方式

实现前端页面跳转的几种方式推荐使用<scriptlanguage=‘javascript‘>document.location=‘http://mail.qq.com/domain/longtimenosee.cc‘</script>相关阅读http://www.jb51.net/article/25403.htmhttp://my.oschina.net/ososchi 查看详情

前端面试题汇总

...tTickvue2源码框架和流程分析人人都能懂的Vue源码系列高级前端开发者必会的34道Vue面试题系列Web开发中跨域的几种解决方案9种常见的前端跨域解决方案(详解)跨域资源共享CORS详解CORS跨域中的preflight请求彻底理解cookie,session,... 查看详情