導語:直接上處理方法,具體原理請自行查閱資料.
一.服務器段:
設置可以支持跨域請求:
response.setHeader("Access-Control-Allow-Origin", request.getHeader("Origin"));
/* response.setHeader("Access-Control-Allow-Methods", "POST, GET, OPTIONS, DELETE");
response.setHeader("Access-Control-Max-Age", "3600");
response.setHeader("Access-Control-Allow-Headers", "x-requested-with");*/
response.setHeader("Access-Control-Allow-Credentials","true"); //是否支持cookie跨
@RestController
@CrossOrigin(origins = "http://127.0.0.1:8080",maxAge = 3600)
@RequestMapping("/login")
//@SessionAttributes(value="validCode")
public class LoginController {
@Autowired
private LoginServer loginServer;
@RequestMapping(value = "in" ,method = RequestMethod.POST)
public void login(HttpServletRequest request, HttpServletResponse response,HttpSession session) throws ServletException, IOException {
request.setCharacterEncoding("utf-8");
response.setContentType("text/html;charset=utf-8");
response.setHeader("Access-Control-Allow-Origin", request.getHeader("Origin"));
/* response.setHeader("Access-Control-Allow-Methods", "POST, GET, OPTIONS, DELETE");
response.setHeader("Access-Control-Max-Age", "3600");
response.setHeader("Access-Control-Allow-Headers", "x-requested-with");*/
response.setHeader("Access-Control-Allow-Credentials","true"); //是否支持cookie跨域
Login user=null;
JSONObject obj=new JSONObject();
PrintWriter out=response.getWriter();
String code=request.getParameter("code");
String username=request.getParameter("username");
String pwd=request.getParameter("pwd");
session=request.getSession();
String validCode=(String) session.getAttribute("validCode");
2.客戶端
在ajax請求中添加可以支持攜帶cookie;
xhrFields:{ withCredentials:true },
$.ajax({
type:"post",
url:"http://127.0.0.1:8081/service/login/in",
xhrFields:{
withCredentials:true
},
data:{
username:$("#username").val(),
pwd:$("#pwd").val(),
code:$("#code").val()
},
dataType:"json",
success:function (data) {
if(data.pass){
window.location.href="index.html";
}else{
layer.alert(data.msg)
}
}
})