美文网首页
浏览器跨域与处理方案

浏览器跨域与处理方案

作者: storyWrite | 来源:发表于2023-12-14 16:14 被阅读0次

1.为什么会出现跨域问题

浏览器基于安全性考虑(减少一些攻击发生的可能性)不允许非同源(同源是指协议、域名、端口三者相同,即使两个不同的域名指向同一个ip地址也是非同源。主域名相同二级域名不同也为不同源例如 https://abc.com 与https//:www.abc.com)请求发生。
其实虽然浏览器报错,但是实际请求已经到了后端层面,只是浏览器不允许,拦截了请求

2.解决方案

2.1 jsonp
利用js文件请求不受同源策略限制实现,但是只能发送get请求,并且需要后端配合实现,现在基本不使用这种手段

2.2 cors 常用

跨源资源共享标准新增了一组 HTTP 标头字段,允许服务器声明哪些源站通过浏览器有权限访问哪些资源。另外,规范要求,对那些可能对服务器数据产生副作用的 HTTP 请求方法(特别是 GET 以外的 HTTP 请求,或者搭配某些 MIME 类型POST 请求),浏览器必须首先使用 OPTIONS 方法发起一个预检请求(preflight request),从而获知服务端是否允许该跨源请求。服务器确认允许之后,才发起实际的 HTTP 请求。在预检请求的返回中,服务器端也可以通知客户端,是否需要携带身份凭证(例如 CookieHTTP 认证相关数据)。

CORS 请求失败会产生错误,但是为了安全,在 JavaScript 代码层面无法获知到底具体是哪里出了问题。你只能查看浏览器的控制台以得知具体是哪里出现了错误。

后端配置请求头Access-Control-Allow-Origin 把当前域名添加到上面,则浏览器就能正常发送请求获得服务器返回结果
将请求分为简单请求与复杂请求
简单请求不会发送options预检请求,会直接请求 服务器,服务器允许则访问成功,不允许则失败

复杂请求会先发送预检请求,看服务器是否允许此次请求,允许发送真正请求,不允许则请求失败

2.3 代理
2.3.1反向代理(负载均衡)

通过nginx 在前端所在服务器加一个nginx对部分请求进行转发,相当于多了一层中间人在传话,前端工程跟nginx所在服务器一个域名就不会跨域了


反向代理.png

反向代理 服务器对用户不可见,用户不清楚真正的访问服务器那一台

2.3.2正向代理(vpn)

正向代理就是在本地客户端建立一个拦截,对于部分请求从本地,直接连接到例如vpn对应的服务器,再由服务器发送真正的请求到真实请求服务器


正向代理.png

正向代理,用户对服务器不可见,服务器并不知道当前的用户到底是谁

2.3.3 node
一些基于node的工程(例如nuxt)可以通过node进行一个代理转发,本质也是代理

3. 浏览器允许的一些跨域

3.1 js文件加载

jsonp的实现也是基于浏览器允许非同源的js资源加载的前提

3.2 css文件加载
3.3 new Image 创建对象

可以用来实现埋点,但是只能发送get请求,且不能与服务器进行数据上的双向交流,即只能 给服务器传递数据而不能服务器给浏览器返回数据

相关文章

  • 关于设置env等环境变量的思考

    1、如何处理跨域后台处理跨域前端处理跨域浏览器处理跨域 前端本地处理跨域:代理线上跨域的处理方式:Nginx反向代...

  • 浏览器跨域及其解决方案

    title: 浏览器跨域及其解决方案author: Maydate: 20220428 什么是跨域跨域的表现解决跨...

  • 记一次浏览器预检请求跨域问题的踩坑

    通用的跨域处理方案 如果你是一枚前端工程师,我想应该或多或少对浏览器跨域请求有一些了解。 跨域的详细知识,就不再这...

  • JS跨域及解决方案

    <转>详解跨域(最全的解决方案) 什么是跨域跨域,是指浏览器不能执行其他网站的脚本。它是由浏览器的同源策略造成的,...

  • 跨域解决方案

    在讲解决跨域解决方案之前,我们需要了解什么是跨域,在什么情况下会跨域,跨域解决的是什么问题? 一、跨域,是指浏览器...

  • 跨源网络访问

    链接:浏览器的同源策略链接:跨域资源共享链接:跨域共享数据的十种方法链接:前端跨域问题及其解决方案 广义的跨域:1...

  • 浏览器同源策略与ajax跨域方法汇总

    本文先简要介绍前端开发中的浏览器同源政策;然后在跨域问题中,具体介绍跨域ajax请求的应用场景与实现方案。 什么是...

  • 面试官:那有没遇到跨域问题,如何解决跨域?

    面试官:有没遇到跨域问题,如何解决跨域? 一、同源策略 谈到跨域问题,要先谈浏览器的同源策略。 二、解决方案 1、...

  • 请求接口时跨域问题,前端解决方法

    在前后端接口请求中,由于浏览器的限制,会出现跨域的情况。常用的跨域方案有: 1、JSONP跨域2、Nginx反向代...

  • 跨域问题

    跨域问题与SpringBoot解决方案 什么是跨域? 定义:浏览器从一个域名的网页取请求另一个域名下的东西。通俗点...

网友评论

      本文标题:浏览器跨域与处理方案

      本文链接:https://www.haomeiwen.com/subject/dlqwgdtx.html