卷神一代
withCredentials 属性
CORS 请求默认不发送 Cookie 和 HTTP 认证信息。如果要把 Cookie 发到服务器,一方面要服务器同意,指定 Access-Control-Allow-Credentials 字段。
出现这个报错信息很可能是你在前端设置了 withCredentials = true; 你可以去掉这个设置。
qq_慕尼黑4569924
weixin_慕数据3507303
你不要在项目外部用文件方式打开,改在项目里操作,具体操作见我上面的贴图。
同时检查你的代码,尝试保持跟我以下的代码一致,试试看
1、UserController 类首处
@RestController
@RequestMapping("/user")
@CrossOrigin(allowCredentials = "true", allowedHeaders = "*")
public class UserController extends BaseController {
2、getOtp方法
@RequestMapping(value = "/getotp", method = {RequestMethod.POST}, consumes = {CONTENT_TYPE_FORMED})
@ResponseBody
public CommonResponse getOtp(@RequestParam(name = "telphone") String telphone){
3、register方法
@Transactional
@RequestMapping(value = "/register", method = {RequestMethod.POST}, consumes = {CONTENT_TYPE_FORMED})
@ResponseBody
public CommonResponse register(@RequestParam(name = "telphone") String telphone,
积累与知识的摇篮
积累与知识的摇篮
慕九州713638
<html>
<head>
<meta charset="utf-8" />
<script src="static/assets/global/plugins/jquery-1.11.0.min.js" type="text/javascript"></script>
</head>
<body>
<div>
<h3>获取otp信息</h3>
<div>
<label>手机号</label>
<div>
<input type="text" placeholder="手机号" name="telphone" id="telphone" />
</div>
</div>
<div>
<button id="getotp" type="submit">
获取otp短信
</button>
</div>
</div>
</body>
<script>
jQuery(document).ready(function() {
$("#getotp").on("click",function(){
var telphone = $("#telphone").val();
if(telphone == null || telphone == ""){
alert("手机号不能为空");
return false;
}
$.ajax({
type:"POST",
contentType:"application/x-www-form-urlencoded",
url:"http://localhost:8080/user/getotp",
data:{
"telphone":$("#telphone").val(),
},
success:function(data){
if(data.status == "success") {
alert("otp已经发送到了您的手机上,请注意查收");
} else {
alert("otp发送失败,原因为"+data.data.errMsg);
}
},
error:function(data){
alert("otp发送失败,原因为" + data.responseText);
}
});
return false;
});
});
</script>
</html>
慕慕5239605
看下接口名字是不是写错了,我就是写错了,然后报这个错误的
qq_慕仰9199122
变量有冲突了吧
qq_慕盖茨3122115
我也出现了这个情况,经过排查发现,UserController中register里,获取session的时候,应该传变量telephone,我传的字符串“telephone”。。
慕姐6484396
回答一下,得个积分
qq_真正的自己_0
找到了, 右侧有下载链接
qq_慕少2290290
weixin_慕的地6539067
在head里面写了<script src="static/assets/global/plugins/jquery-1.11.0.min.js" type="text/javascript"></script>吗? 还有可能是代码拼写错误
arsenstan
解决了,将alter改成alert就好了,这错误?
qq_零下_5
@CrossOrigin(allowCredentials = "true",allowedHeaders = "*")
已经解决改成这个即可
卡卡东
这里吧
雨啊
可以看一下你的if(data.status == "success")里面status 和你CommonReturnType.java里面的 status是否对应正确
weixin_慕仙521292
错了
前端ajax内加xhrFields: {withCredentials: false},是false不是true
这个是携不携带cookie
weixin_慕仙521292
Ajax跨域请求问题,设置一下属性就可以了,前端Ajax请求中添加
xhrFields: {withCredentials: true},
后端controller层添加@CrossOrigin(origins = "*", allowCredentials = "true")就可以访问了
慕粉4137464
解决了, 是我敲错了一个单词 (将status 敲成了 staus),所以才造成这样的问题,还得细心
慕无忌1108578
慕斯卡4099679
找到了$("#getotp"),选择器忘记打#了
嘻嘻叶
input 后面的东西不要加逗号
<input type="text" placeholder="..." id="telphone"></input>
慕标7289523
java后台没有写请求头
慕数据6486521
我也是这个问题,请问解决了吗
慕数据6486521
是otp,还是opt,老师写的没错啊,我这里就实现了。
慕哥2284759
你把basecontroller里面抛异常的方法注释掉就能看到错误了
weixin_慕沐2457178
因为手机号没做效验所以随便输入什么数字都可以发送你可以用正则表达式在前端添加判断
大学霸
跨域是因为前端(本地)跟后端的域名不一致,所有这种请求叫跨域请求,叫了那一行代码就是服务器放权给所有其他所有域名,让他们可以访问到服务器上面的资源
慕虎3569687
是不是你引入jquery文件的时候路径填错了