目录
- jquery发送请求出现跨域问题解决
- jquery post请求返回空值的结局
jquery发送请求出现跨域问题解决
上述是我在做注册做用户添加时侯的报错,注意这里做的时post请求,get请求作者没有产生跨域问题。
然后经过查了一些资料,大部分是说在前端通过一个回调去解决,但是尝试了很久,依旧没有效果。
然后我就采用了在后端添加拦截器的方式解决了问题。
- 下面是我的工作目录
- 代码
package com.itheima.interceptor;
import org.springframework.http.HttpMethod;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class CorsInterceptor implements HandlerInterceptor {
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
//表示接受任意域名的请求,也可以指定域名
response.setHeader("Access-Control-Allow-Origin",request.getHeader("origin"));
//该字段可选,是个布尔值,表示是否可以携带cookie
response.setHeader("Access-Control-Allow-Credentials", "true");
response.setHeader("Access-Control-Allow-Methods", "GET, HEAD, POST, PUT,PATCH, DELETE, OPTIONS");
response.setHeader("Access-Control-Allow-Headers", "*");
if (HttpMethod.OPTIONS.toString().equals(request.getMethod())){
return true;
}
return true;
}
@Override
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
}
@Override
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
}
}
package com.itheima.interceptor;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
@Configuration
public class InterceptorConfig implements WebMvcConfigurer {
@Override
public void addInterceptors(InterceptorRegistry registry) {
/**
* 拦截全部路径,跨域放到最上面
*/
registry.addInterceptor(new CorsInterceptor()).addPathPatterns("/**");
//拦截哪些路径
WebMvcConfigurer.super.addInterceptors(registry);
}
}
在解决了跨域问题后,又出现了一个问题,就是在我发送post请求后,给我返回了一个null值,那么对于这个问题我是下面这样解决的
jquery post请求返回空值的结局
- 产生这种原因,无非就是没有采用正确的ajax请求方式,作者踩了很多坑,找到了一种可行的请求方式
$.ajax({
async: false,
cache: false,
type: 'POST',
url: 'http://localhost:92/personalInfo/b',
dataType: "json",
contentType: 'application/json', //第二步:定义格式
data: JSON.stringify(data), //第二步;把json转为String传递给后台
error: function () {
alert('请求失败 ');
},
success: function (data) {
console.log(data);
//alert(data);
}
});
- 重点关注一下上面7个参数,至于具体代表,大家自行查阅资料