跨越请求及实现跨域的方案

跨域请求概念

什么是域?
当两个应用的协议,主机地址(或域名),端口号(默认80)其中一项不同,则认为他们的域是不同的。

什么是 js 跨域?
两个不同的域 a,b,在a的js脚本中用ajax调用了b的后端地址,跨越是浏览器进行安全限制的一种方法,如果浏览器禁用了这种安全限制就不会出现跨域问题

跨域请求过程

浏览器 -------> 服务器 (预请求) ---- 判断返回的头信息是否支持支持跨域请求
头信息 Access - Control - Allow - Origin:域 ---->后边的域是可以实现跨域请求的域
浏览器 -------> 服务器 (预响应) -----返回预请求响应

浏览器 -------> 服务器 (请求)
浏览器 -------> 服务器 (响应)
在这里插入图片描述

跨域解决方案 – CORS

它允许浏览器向跨调服务器,发出XMLHttpRequest请求,从而克服了AJAX只能同源使用的限制,整个CORS通信过程,都是浏览器自动完成,不需要用户参与,对于开发者来说,CORS通信与同源AJAX通信没有差别,代码完全一样,浏览器一旦发现AJAX请求跨源,就会自动添加一些附加的头信息,有时还会发出一次附加的请求,但是用户不会感觉到,因此,实现CORS通信的关键是服务器,只要服务器实现了CORS 接口,就可以实现跨域通信

java解决跨域

底层

// 设置头信息和可以请求的域即可
response.setHeader("Access-Control-Allow-Origin","Http:localhost:8081"); 
// 所有的域都可以
response.setHeader("Access-Control-Allow-Origin","*"); 
// 如果设置操作cookie,可以请求的域不可以设置为 * ,需指定域
response.setHeader("Access-Control-Allow-Credentials","true");

spring MVC解决跨域

// 相当于response.setHeader("Access-Control-Allow-Origin","Http:localhost:8081")
@CrossOrigin(origins="Http:localhost:8081",allowCredentials = "true")//如果要操作cookie 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值