Ajax访问Servlet的跨域请求问题—Access-Control-Allow-Origin
2017-03-16 20:11
423 查看
<script type="text/javascript" src="js/jquery-3.1.1.min.js"></script> <form > 用户名:<input type="text" id="userName"/><br/> 密码:<input type="password" id="userPwd"/><br/> <input type="button" value="登录" id="sender"> </form> <div id="messageDiv"></div> <script> $('#sender').click(function(){ var userName=document.getElementById('userName').value; var userPwd=document.getElementById('userPwd').value; var user={userName:userName,userPwd:userPwd}; var url="http://10.30.1.102:8080/partner-back/LoginUserServlet"; $.post(url, JSON.stringify(user), function(data) { $("#messageDiv").html(data); }); }); </script>
public class LoginUserServlet extends HttpServlet { private static final long serialVersionUID = 1L; public LoginUserServlet() { super(); } protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doPost(request, response); } protected void doOptions(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doPost(request, response); } protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { Writer out = response.getWriter(); JSONObject jsonObject=new JSONObject(); //获取客户端发送的json数据 JSONObject json=null; try { json=JsonReader.receivePost(request); } catch (Exception e) { e.printStackTrace(); jsonObject.put("message", "用户登录失败!"); out.write("{}"); out.flush(); return; } System.out.println(json); UserService userService=new UserService(); //将建json对象转换为java对象 User loginUser = (User)JSONObject.toBean(json,User.class); User user = userService.LoginUser(loginUser); if(user!=null){ //将java对象转换为json对象 jsonObject.put("user", JSONObject.fromObject(user)); jsonObject.put("message", "用户登录成功!"); jsonObject.put("token", token); }else{ jsonObject.put("message", "用户登录失败!"); } out.write(jsonObject.toString()); out.flush(); } }
@WebFilter("/*") public class CORSFilter implements Filter { public CORSFilter() { } public void destroy() { } 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, DELETE, PUT"); response.setHeader("Access-Control-Max-Age", "3628800"); System.out.println("设置跨域请求"); chain.doFilter(req, response); } public void init(FilterConfig fConfig) throws ServletException { } }
相关文章推荐
- AJax+Servlet 跨域问题 Access-Control-Allow-Origin
- Ajax请求跨域问题,报错XMLHttpRequest cannot load ''. No 'Access-Control-Allow-Origin' header is present on t
- Ajax 跨域请求 Access-Control-Allow-Origin 问题
- ajax请求node.js接口时出现跨域问题Access-Control-Allow-Origin
- Ajax 设置Access-Control-Allow-Origin实现跨域访问
- ajax 设置Access-Control-Allow-Origin实现跨域访问
- 解决Ajax跨域问题:Origin xx is not allowed by Access-Control-Allow-Origin.
- Ajax跨域问题的解决方法之一 —— "Access-Control-Allow-Origin"
- ajax 设置Access-Control-Allow-Origin实现跨域访问
- ajax Access-Control-Allow-Origin跨域问题
- 解决NodeJS+Express模块的跨域访问控制问题:Access-Control-Allow-Origin
- ajax 设置Access-Control-Allow-Origin实现跨域访问
- Access-Control-Allow-Origin:ajax 跨域访问
- ajax 设置Access-Control-Allow-Origin实现跨域访问
- chrome发起跨域ajax请求遇到 Origin null is not allowed by Access-Control-Allow-Origin 一解
- ajax 设置Access-Control-Allow-Origin实现跨域访问
- Access-Control-Allow-Origin 跨域访问问题
- Access-Control-Allow-Origin:ajax 跨域访问
- ajax 设置Access-Control-Allow-Origin实现跨域访问
- [Ajax]设置Access-Control-Allow-Origin实现跨域访问(Header)