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");
}
其中*是代表允许所有站点访问,平时学习这样用就无妨,实际中使用,还需要进一步了解。