加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ajax – Spring MVC Zepto POST中的“Access-Control-Allow-Orig

发布时间:2020-12-16 03:07:20 所属栏目:百科 来源:网络整理
导读:我正在尝试将JSON对象POST到我的Spring MVC控制器,但我只收到Access-Control-Allow-Origin错误. 我的控制器: @RequestMapping(value= "/add",method = RequestMethod.POST,headers = {"content-type=application/json"})public @ResponseBody Reponse addUs
我正在尝试将JSON对象POST到我的Spring MVC控制器,但我只收到Access-Control-Allow-Origin错误.

我的控制器:

@RequestMapping(value= "/add",method = RequestMethod.POST,headers = {"content-type=application/json"})
public @ResponseBody Reponse addUser(Model model,@RequestBody @Valid @ModelAttribute("user") User user,BindingResult result) {
    if (result.hasErrors()) {
        Reponse error = new Reponse();
        // etc......
        return error;
    } else {
        return service.addUser(user);
    }
}

我的Zepto POST:

this.addUser = function (valeur,callback) {
    $.ajax({
        type: 'POST',url: 'http://127.0.0.1:8080/AgenceVoyage/user/add',data: JSON.stringify({"mail" : "toto@toto.fr","password" : "titi"}),dataType: "json",contentType: "application/json",success: function(data) {
            if(data.reponse == "OK") {
                window.location = "main.html";
            } else {
                alert("PROBLEM");
            }
        },error: function(xhr,type) {
            alert("ERROR");
        }
    });
};

我尝试在POST请求中没有stringify,在@RequestMapping中没有标题.

我的结果:

OPTIONS 07000 No
‘Access-Control-Allow-Origin’ header is present on the requested
resource. Origin ‘07001’ is therefore not allowed
access. zepto.min.js:2 XMLHttpRequest cannot load

我找到了解决方案:

首先,创建一个新的过滤器,它将设置标头响应:

@Component
public class SimpleCORSFilter implements Filter {

    public void doFilter(ServletRequest req,ServletResponse res,FilterChain chain) throws IOException,ServletException {
        HttpServletResponse response = (HttpServletResponse) res;
        response.setHeader("Access-Control-Allow-Origin","*");
        response.setHeader("Access-Control-Allow-Methods","POST,GET,OPTIONS,DELETE");
        response.setHeader("Access-Control-Max-Age","3600");
        response.setHeader("Access-Control-Allow-Headers","x-requested-with");
        chain.doFilter(req,res);
    }

    public void init(FilterConfig filterConfig) {}

    public void destroy() {}

}

之后,在您的web.xml中添加以下行:

<filter>
  <filter-name>cors</filter-name>
  <filter-class>MY.PACKAGE.SimpleCORSFilter</filter-class>
 </filter>

 <filter-mapping>
  <filter-name>cors</filter-name>
  <url-pattern>/*</url-pattern>
 </filter-mapping>

那就是全部!

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读