前端经典面试题 | 浏览器跨域

简介: 前端经典面试题 | 浏览器跨域

一、回答点

       CORS Nginx反向代理 同源策略

       跨域的问题源自于浏览器为了请求的安全,从而引入的基于 同源策略的安全特性.当页面和请求的协议、主机名或域名不同时,浏览器会判定两者不为同源,即为跨域请求.(跨域只是浏览器限制,服务端无影响.当产生跨域时,我们可以通过CORS JSONP Nginx反向代理 等方式解决)

二、深入回答

为什么有跨域问题

      跨域问题是浏览器对于请求的⼀种安全限制:⼀个⻚⾯发起的ajax请求,只能是于当前⻚同域名的 路径,这能有效的阻⽌跨站攻击。 因此:跨域问题 是针对发送请求的⼀种限制。 但是这却给我们的开发带来了不便.

判断是否为跨域

e9a9faaac203464f9c9dd8b8969fb1cb.png

       如上图:一个origin由协议(https:)、主机名(csdn)、端口(默认8080)组成 上图没有端口号,只有当 协议 主机名 端口都相同时 才会判定都是同源关系,如不符合即为跨域.

跨域的解决方案

       工作当中遇到最多的方案为 CORS 跟 Nginx反向代理


      Nginx反向代理:


               利用nginx反向代理把跨域改为不跨域,支持各种请求方式


               缺点:需要对nginx进行额外的配置


       CORS规范化跨域请求:


               优点:在服务端进行控制是否允许跨域,可以自定义规则 支持各种请求方式


               缺点:CORS需要IE10以上

实现方式

       反向代理:


               在页面同域下配置一套反向代理服务,页面请求同域的服务端,服务端请求上游的实际的服务端,然后将结果返回给前端.


       CORS:


               CORS 将请求分为简单请求和需预检请求


      简单请求:不会触发预检请求的称为简单请求。


      预检请求:当一个请求不满足以上简单请求的条件时,浏览器会自动向服务端发送一个 OPTIONS 请求,通过服务端返回的 Access-Control-Allow * 判定请求是否被允许

相关文章
|
存储 人工智能 前端开发
前端大模型应用笔记(三):Vue3+Antdv+transformers+本地模型实现浏览器端侧增强搜索
本文介绍了一个纯前端实现的增强列表搜索应用,通过使用Transformer模型,实现了更智能的搜索功能,如使用“番茄”可以搜索到“西红柿”。项目基于Vue3和Ant Design Vue,使用了Xenova的bge-base-zh-v1.5模型。文章详细介绍了从环境搭建、数据准备到具体实现的全过程,并展示了实际效果和待改进点。
1780 14
|
前端开发 JavaScript 应用服务中间件
前端跨域问题解决Access to XMLHttpRequest at xxx from has been blocked by CORS policy
跨域问题是前端开发中常见且棘手的问题,但通过理解CORS的工作原理并应用合适的解决方案,如服务器设置CORS头、使用JSONP、代理服务器、Nginx配置和浏览器插件,可以有效地解决这些问题。选择合适的方法可以确保应用的安全性和稳定性,并提升用户体验。
9929 90
|
Web App开发 JSON 安全
Chrome浏览器的跨域问题
【10月更文挑战第6天】
3169 123
|
Web App开发 存储 前端开发
Chrome浏览器的跨域问题
Chrome浏览器的跨域问题
1438 128
|
前端开发 JavaScript 安全
剖析跨域问题始末及其解决方案——前端必备交叉知识(一)
跨域问题是前端开发中的常见挑战,了解并掌握不同的跨域解决方案能帮助你更高效地进行开发工作。本文对同源策略、跨域以及解决跨域的三种方案: CORS、JSONP、代理等跨域技术进行了介绍。选择合适的跨域解决方案非常重要。 在实际开发中,推荐优先考虑使用 CORS,因为它是现代浏览器支持的标准,且安全性较高。如果服务器无法修改,则可以考虑使用代理。如果是特殊情况,可以使用 JSONP,但要注意安全性。 只有锻炼思维才能可持续地解决问题,只有思维才是真正值得学习和分享的核心要素。如果这篇博客能给您带来一点帮助,麻烦您点个赞支持一下,还可以收藏起来以备不时之需,有疑问和错
|
JavaScript 前端开发 Java
springboot解决js前端跨域问题,javascript跨域问题解决
本文介绍了如何在Spring Boot项目中编写Filter过滤器以处理跨域问题,并通过一个示例展示了使用JavaScript进行跨域请求的方法。首先,在Spring Boot应用中添加一个实现了`Filter`接口的类,设置响应头允许所有来源的跨域请求。接着,通过一个简单的HTML页面和jQuery发送AJAX请求到指定URL,验证跨域请求是否成功。文中还提供了请求成功的响应数据样例及请求效果截图。
503 3
springboot解决js前端跨域问题,javascript跨域问题解决
|
前端开发 JavaScript Java
前端解决axios请求的跨域问题【2步完成】
本文介绍如何通过前端配置解决跨域问题,主要针对Vue项目中的`vite.config.js`文件进行修改。作者在联调过程中遇到跨域报错
1251 1
|
Web App开发 前端开发 Linux
「offer来了」浅谈前端面试中开发环境常考知识点
该文章归纳了前端开发环境中常见的面试知识点,特别是围绕Git的使用进行了详细介绍,包括Git的基本概念、常用命令以及在团队协作中的最佳实践,同时还涉及了Chrome调试工具和Linux命令行的基础操作。
「offer来了」浅谈前端面试中开发环境常考知识点
|
移动开发 JSON JavaScript
|
前端开发 JavaScript 安全
揭秘!前端大牛们如何高效解决跨域问题,提升开发效率!
【10月更文挑战第30天】在Web开发中,跨域问题是一大挑战。本文介绍前端大牛们常用的跨域解决方案,包括JSONP、CORS、postMessage和Nginx/Node.js代理,对比它们的优缺点,帮助初学者提升开发效率。
552 4