一般而言,对于跨域 XMLHttpRequest 或 Fetch 请求,浏览器不会发送身份凭证信息。如果要发送凭证信息,需要设置 XMLHttpRequest 的某个特殊标志位。
http://localhost:8080/index.html
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>跨域测试</title>
<script type="text/javascript" src="js/jquery-1.11.3.min.js"></script>
<script type="text/javascript">
function myAjax(){
$.ajax({
url: 'http://localhost:8081/cors/getTime',
type: 'post',
dataType:'json',
//async:false,
data: {
"name" : "孙悟空"
},
xhrFields:{withCredentials: true},
success:function(result){
//显示在 font 标签
$("#show").html(result);
}
});
}
</script>
</head>
<body>
<input type="button" value="以ajax(post)方式获取当前时间" onclick="myAjax()" />
<br/>
当前时间:
<font id="show"></font>
</body>
</html>
其中:
接口:http://localhost:8081/cors/getTime
@RestController
@RequestMapping("/cors")
public class GetTime {
@RequestMapping("/getTime")
@CrossOrigin(origins="http://localhost:8080",allowCredentials="true")
public Date getTime(String name) {
System.out.println(name);
return new Date();
}
}
携帶cookie:
未携帶cookie:
其他ajax方式:
$.ajax({
...
xhrFields: {
withCredentials: true
}
});