錯誤代碼: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");
}
其中*是代表允許所有站點訪問,平時學習這樣用就無妨,實際中使用,還需要進一步了解。