Servlet设置支持前端的跨域请求

错误代码:Access to XMLHttpRequest at 'http://localhost:8080/test/login?name=123' from origin 'null' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.

 

若我们将前后端分离的时候,就会涉及跨域请求的问题,这时需要在后端的接口中,进行相应的配置。

 用浏览器发起请求,看到浏览器控制台如上图爆红了,不尽人意,这该如何是好!

我们发现了这个带有引号的组合词 'Access-Control-Allow-Origin',百度翻译一下比较稳妥。

其实应该是"允许访问控制源点"的意思,说明前端请求有一定的限制,才会导致服务器响应出问题了。 

那么就需要一些权限。如下操作即可。

在Servlet请求处理类中的service、doGet或doPost方法加上以下代码。

protected void service(HttpServletRequest arg0, HttpServletResponse arg1) throws ServletException, IOException {

  //设置跨域访问
   

  /* 允许跨域的主机地址 */
  response.setHeader("Access-Control-Allow-Origin", "*");
  /* 允许跨域的请求方法GET, POST, HEAD 等 */
  response.setHeader("Access-Control-Allow-Methods", "*");
  /* 重新预检验跨域的缓存时间 (s) */
  response.setHeader("Access-Control-Max-Age", "4200");
  /* 允许跨域的请求头 */
  response.setHeader("Access-Control-Allow-Headers", "*");
  /* 是否携带cookie */
  response.setHeader("Access-Control-Allow-Credentials", "true");

 

}

其中*是代表允许所有站点访问,平时学习这样用就无妨,实际中使用,还需要进一步了解。

 

posted @ 2020-07-25 21:28  Rego  阅读(1897)  评论(0)    收藏  举报