跨域问题是前端开发中常见且必须掌握的知识点之一。本文将详细介绍跨域的概念、手写JSONP和CORS跨域代码及其原理,如何在Vue3项目中替换Mock数据接口为真实后端数据接口,以及总结九种常见的跨域解决方案。
跨域是指浏览器因同源策略的限制,无法访问不同源(协议、域名、端口任一不同)的资源。例如,前端页面运行在 ,但需要访问 的数据时,就会遇到跨域问题。
JSONP(JSON with Padding)是一种非正式的数据传输格式,它通过 标签的 属性来实现跨域请求。因为 标签不受同源策略限制。
前端代码:
后端代码(Node.js示例):
CORS(Cross-Origin Resource Sharing)是一种机制,它使用额外的HTTP头来告诉浏览器,允许从其他域加载资源。服务器通过设置适当的HTTP响应头,来告诉浏览器哪些域可以访问资源。
前端代码:
后端代码(Node.js示例):
在Vue3项目中,我们可以通过修改API请求地址,将Mock数据接口替换为真实后端数据接口。
假设我们有一个Vue3项目,之前使用Mock数据:
现在,我们将其替换为真实后端接口:
然后在组件中调用:
- JSONP:通过 标签实现跨域,只支持GET请求。
- CORS:通过设置HTTP头允许跨域请求,支持复杂请求。
- 服务器代理:如使用Node.js中间件(http-proxy-middleware)或Nginx代理请求,绕过浏览器的同源策略。
- WebSocket:WebSocket协议不受同源策略限制,可以实现跨域通信。
- PostMessage:通过 实现不同窗口间的数据传递。
- 跨域资源嵌入:通过 、 、 、 等标签加载跨域资源。
- document.domain:适用于主域相同子域不同的跨域,通过设置相同的 实现。
- window.name:通过改变窗口的 属性实现跨域数据传递。
- 跨域请求伪造(CORS Preflight):通过简单请求或预检请求绕过CORS限制。
详见上文。
详见上文。
4. WebSocket示例
后端代码(Node.js示例):
5. PostMessage示例
6. 跨域资源嵌入示例
7. document.domain示例
8. window.name示例
9. 跨域请求伪造(CORS Preflight)示例
后端代码:
到此这篇前端跨域解决方案面试(前端面试 跨域)的文章就介绍到这了,更多相关内容请继续浏览下面的相关推荐文章,希望大家都能在编程的领域有一番成就!
版权声明:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若内容造成侵权、违法违规、事实不符,请将相关资料发送至xkadmin@xkablog.com进行投诉反馈,一经查实,立即处理!
转载请注明出处,原文链接:https://www.xkablog.com/qdkf/41642.html