什么是JS跨域请求
这里说的js跨域是指通过js在不同的域之间进行数据传输或通信,比如用ajax向一个不同的域请求数据,或者通过js获取页面中不同域的框架中(iframe)的数据。只要协议、域名、端口有任何一个不同,都被当作是不同的域。
一句话,说明白跨域:跨域,指的是浏览器不能执行其他网站的脚本。它是由浏览器的同源策略造成的,是浏览器施加的安全限制。所谓同源是指,域名,协议,端口均相同。
跨域案例探讨与分析:
http://www.demo.com/aaa与http://www.demo.com/bbb 只是请求方法不同,没有跨域
http://www.demo.com与http://search.demo.com 域名不同,跨域
http://www.demo.com:80与http://www.demo.com 没有跨域
http://www.demo.com与http://www.demo.com:81 默认端口是80,所以请求端口不同,跨域
http://www.demo.com与https://www.demo.com http 协议不同,所以跨域
跨站:从这个站到另一个站的访问请求过程,从域名的角度上讲,跨站是跨域的一种
解决方案:
1.CORS -- 跨域共享
CORS请求默认不发送Cookie和HTTP认证信息。如果要把Cookie发到服务器,一方面要服务器同意,指定Access-Control-Allow-Credentials字段。另一方面,开发者必须在AJAX请求中打开withCredentials属性。否则,即使服务器同意发送Cookie,浏览器也不会发送。或者,服务器要求设置Cookie,浏览器也不会处理。
具体使用:
1.在web工程controller.java 的方法里面 添加下面两句代码
//设置可以访问的域,值设置为*时,允许所有域
response.setHeader("Access-Control-Allow-Origin", "http://localhost:8085");
//如果需要操作cookies,必须加上此配置,标识服务端可以写cookies,
// 并且Access-Control-Allow-Origin不能设置为*,因为cookies操作需要域名
response.setHeader("Access-Control-Allow-Credentials", "true");
// Access-Control-Allow-Origin是HTML5中定义的一种解决资源跨域的策略。
2.SpringMVC跨域注解
springMVC的版本在4.2或以上版本,可以使用注解实现跨域, 我们只需要在需要跨域的方法上添加注解@CrossOrigin即可
@CrossOrigin(origins="http://localhost:8085",allowCredentials="true")
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!