前后端分离,ajax前端跨域访问后端

当我们做前后端分离项目的时候,有时候前结合后端做调试的时候,就面临前端要跨域访问后端的情况,直接从前端跨域访问后端是需要在后端中做接受前端IP地址发出请求的接受处理,这句话很拗口,简单讲就是你要在后端设置一把前端所在服务器IP能够开你后端大门的钥匙,至于这个钥匙所做的处理是什么呢?是往请求消息头中加Access-Control-Allow-Origin ,Access-Control-Allow-Origin是HTML5 添加的新功能,设置这个属性值为你前端所在服务器的ip地址。废话不多说,下面直接展示例子:

[java]  view plain  copy
 print ?
  1. package com.yiyong.mavenspring.project.filters;  
  2.   
  3. import java.io.IOException;  
  4.   
  5. import javax.servlet.Filter;  
  6. import javax.servlet.FilterChain;  
  7. import javax.servlet.FilterConfig;  
  8. import javax.servlet.ServletException;  
  9. import javax.servlet.ServletRequest;  
  10. import javax.servlet.ServletResponse;  
  11. import javax.servlet.http.HttpServlet;  
  12. import javax.servlet.http.HttpServletResponse;  
  13.   
  14. import org.springframework.beans.factory.annotation.Value;  
  15.   
  16. /**    
  17.  * @Title: AccessFilter.java  
  18.  * @Package com.yiyong.mavenspring.project.filters  
  19.  * @Description: TODO(设置其他IP地址的机器可以直接访问本项目Url--工具filter)  
  20.  * @author Yiyong Wu 
  21.  * @date 2015年12月16日 上午10:27:05  
  22.  * @version V1.0    
  23.  */  
  24. public class AccessFilter extends HttpServlet implements Filter{  
  25.       
  26.     /** 
  27.      * 序列ID,用来监测控制版本更新的 
  28.      */  
  29.     private static final long serialVersionUID = 1L;  
  30.       
  31.     @Value("${yiyong.mavenspring.project.allow.url}")  
  32.     private String projectDemoAllowOriginUrl;  
  33.   
  34.     @Override  
  35.     public void init(FilterConfig filterConfig) throws ServletException {                 
  36.     }  
  37.   
  38.     //设置其他IP地址的机器可以直接访问到这个项目的后端  
  39.     @Override  
  40.     public void doFilter(ServletRequest request, ServletResponse response,  
  41.             FilterChain chain) throws IOException, ServletException {  
  42.           
  43.         HttpServletResponse httpResponse = (HttpServletResponse) response;  
  44.         httpResponse.setHeader("Access-Control-Allow-Origin", projectDemoAllowOriginUrl);  
  45.         httpResponse.setHeader("Access-Control-Allow-Headers","Origin, X-Requested-With, Content-Type, Accept");  
  46.         httpResponse.setHeader("Access-Control-Allow-Credentials""true");  
  47.         chain.doFilter(request, httpResponse);  
  48.                   
  49.     }  
  50.   
  51. }  
这是一个过滤器,就是在过滤器中加入Header的基本信息,我这边的IP地址是利用spring的注解方式赋值,当然我们不多说这个,接下去我们就展示前端怎么进行ajax跨域调用

前后端分离,ajax前端跨域访问后端_第1张图片


大家可以结合这个例子做个尝试。希望都可以实现ajax前端跨域访问后端,轻松做到前后端分离。

你可能感兴趣的:(前后台分离之前端部分)