美文网首页
ajax 请求跨域问题

ajax 请求跨域问题

作者: 倔犟的贝壳 | 来源:发表于2018-08-07 14:11 被阅读12次

    缘由:

    H5那边用ajax请求服务器,因为自己测试的时候全是java+浏览器测试,并没发现什么问题。与H5对接的时候,出现跨域问题。

    对于GET请求还好,通过将返回数据包裹在callback里面即可。开始为了省心,便采用了该方法。后面有些请求接口必须使用POST。

    因为要做登录校验,开始不做处理,按普通的上传,发现POST请求每次session都会变,根本没法做session校验。后面从网上找了解决方法

    HttpServletRequest req= (HttpServletRequest)arg0;

    HttpServletResponse res= (HttpServletResponse)arg1;

    res.addHeader("Allow-Control-Allow-Methods", "POST,GET,PUT,DELETE,OPTIONS"); 

    res.addHeader("Access-Control-Max-Age", "100"); 

    res.addHeader("Access-Control-Allow-Headers", "Content-Type,Access-Token");

    res.addHeader("Access-Control-Allow-Origin", req.getHeader("Origin")); 

    res.addHeader("Access-Control-Allow-Credentials", "true");

    res.addHeader("Access-Control-Allow-Credential", "true");

    服务器在设置允许跨域的时候,加上加粗那两行,然后客户端请求的时候加上:

    js的ajax,设置

    xhrFields:{

        withCredentials:true

    }

    这样就ok了。

    顺便说一下:

    res.addHeader("Access-Control-Allow-Origin", req.getHeader("Origin")); 

    如果这儿设置 res.addHeader("Access-Control-Allow-Origin", "*"); 允许所有的源ip的请求,这样是会报错的。

    所以我们从请求中取出来,再设置进去就好了。

    相关文章

      网友评论

          本文标题:ajax 请求跨域问题

          本文链接:https://www.haomeiwen.com/subject/numujftx.html