衣带渐宽终不悔,为伊消得人憔悴。愿,这份爱在你我之间没有 “跨域”

简介: 相信无论是前端还是后端在开发的时候,都会遇到这样的一个问题就是:跨域跨域可以说是成长路上必经的一个“坑”。但是我们不应该对它嗤之以鼻,因为它在时时保护着我们服务器的安全。

“当对一个目标有着强烈的持续的渴望时,苦苦思索体悟,就可能在事先“清晰地看见”那个崭新的结果。相反,如果事先没有清晰的意象,就不会有崭新的成果出现” ——出自《稻盛和夫给年轻人的忠告》

前言

   相信无论是前端还是后端在开发的时候,都会遇到这样的一个问题就是:跨域跨域可以说是成长路上必经的一个“坑”。但是我们不应该对它嗤之以鼻,因为它在时时保护着我们服务器的安全。



概念

到底什么是跨域?

当我们发起一个请求时,请求中URL的协议、域名、端口三者之间任意一个与当前页面URL不同时就出现跨域现象。

解释一下:

一个请求链接如下:

http://www.xxxx.com。那么它的

  • 协议是http://
  • 域名是www.xxxx.com
  • 端口是80(默认端口可以省略)

它的同源的情况如下:


为什么要有跨域?

我们在开发web应用的时候,一般都是基于浏览器。当代浏览器都遵循同源政策。

同源政策的目的,是为了保证用户信息的安全,防止恶意的网站窃取数据。

在这一政策下,受影响的有:

  • Cookie、LocalStorage、IndexDB不能获取
  • DOM 无法获得
  • Ajax 无法正常请求

所以我们平时遇到的AJAX 无法发送只是其中一个情况而已

那么问题来了,小伙伴肯定有疑问,为什么我平时用Postman 或者 其它第三方的测试接口的工具没有发生跨域的情况呢,这是因为它们没有遵循同源政策,所以不会有跨域的情况。

没有必要对跨域嗤之以鼻,如果没有它的存在,各个网站之间的Cookie或者其它敏感的信息相互传递,肯定是非常不安全的。所以我们应该正确对待他。


如何解决跨域?

下面我们重点介绍如何在 AJAX 下解决跨域情况,这是我们平时遇到最多的问题。

其实有三种办法可以解决 AJAX下的跨域情况:

  • JSONP
  • WebSocket
  • CORS

这里呢我们只介绍 CORS 这种情况, 这也是我唯一推荐给大家的一种方式。

在CORS这种情况下,前端几乎不用配置任何东西,当然这要麻烦后端的大佬了,相信大家对下面的配置肯定不陌生。无论是直接复制别人的还是从网上百度的,应该都见过:

Access-Control-Allow-Methods: ……
Access-Control-Allow-Headers: ……
Access-Control-Allow-Credentials: ……
Access-Control-Max-Age: ……

没错,就是这几个请求头。

服务器需要在浏览器预检时候,告诉浏览器,同意你的请求,这时浏览器才会发起真正的请求。

这也是很多小伙伴说,为什么我的后端代码没有执行,没有打印任何信息呢,就是因为这几个头字段没有配置正确,从而浏览器不会继续发起真正的请求。


总结

今天先给大家介绍这么多。详细的信息,大家可以参考【阮一峰】大佬的文章,介绍的非常详细。相信大家在读完之后,一定会有所收获,从此对跨域不再害怕甚至是痛恨了。

相关文章
|
2天前
|
数据采集 人工智能 安全
|
11天前
|
云安全 监控 安全
|
3天前
|
自然语言处理 API
万相 Wan2.6 全新升级发布!人人都能当导演的时代来了
通义万相2.6全新升级,支持文生图、图生视频、文生视频,打造电影级创作体验。智能分镜、角色扮演、音画同步,让创意一键成片,大众也能轻松制作高质量短视频。
1011 151
|
3天前
|
编解码 人工智能 机器人
通义万相2.6,模型使用指南
智能分镜 | 多镜头叙事 | 支持15秒视频生成 | 高品质声音生成 | 多人稳定对话
|
16天前
|
机器学习/深度学习 人工智能 自然语言处理
Z-Image:冲击体验上限的下一代图像生成模型
通义实验室推出全新文生图模型Z-Image,以6B参数实现“快、稳、轻、准”突破。Turbo版本仅需8步亚秒级生成,支持16GB显存设备,中英双语理解与文字渲染尤为出色,真实感和美学表现媲美国际顶尖模型,被誉为“最值得关注的开源生图模型之一”。
1705 9
|
8天前
|
人工智能 自然语言处理 API
一句话生成拓扑图!AI+Draw.io 封神开源组合,工具让你的效率爆炸
一句话生成拓扑图!next-ai-draw-io 结合 AI 与 Draw.io,通过自然语言秒出架构图,支持私有部署、免费大模型接口,彻底解放生产力,绘图效率直接爆炸。
647 152
|
10天前
|
人工智能 安全 前端开发
AgentScope Java v1.0 发布,让 Java 开发者轻松构建企业级 Agentic 应用
AgentScope 重磅发布 Java 版本,拥抱企业开发主流技术栈。
616 12