axios 跨域 +后端 spring配置+filter 都可以

原创
2018/01/19 18:43
阅读数 389

web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
  <display-name>Archetype Created Web Application</display-name>
   <context-param>
      <param-name>contextConfigLocation</param-name>
      <param-value>classpath:spring-servlet.xml</param-value>
   </context-param>
   <servlet>
      <servlet-name>spring</servlet-name>
      <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
      <init-param>
         <param-name>contextConfigLocation</param-name>
         <param-value>classpath:spring-mvc.xml</param-value>
      </init-param>
      <load-on-startup>1</load-on-startup>
   </servlet>
   <listener>
      <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
   </listener>
   <servlet-mapping>
      <servlet-name>spring</servlet-name>
      <url-pattern>*.do</url-pattern>
   </servlet-mapping>
   <filter>
      <filter-name>CharacterEncodingFilter</filter-name>
      <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
      <init-param>
         <param-name>encoding</param-name>
         <param-value>UTF-8</param-value>
      </init-param>
      <init-param>
         <param-name>forceEncoding</param-name>
         <param-value>true</param-value>
      </init-param>
   </filter>
   <filter>
      <filter-name>contextFilter</filter-name>
      <filter-class>app.filter.WebContextFilter</filter-class>
   </filter>
   <filter-mapping>
      <filter-name>contextFilter</filter-name>
      <url-pattern>/*</url-pattern>
   </filter-mapping>

   <filter-mapping>
      <filter-name>CharacterEncodingFilter</filter-name>
      <url-pattern>/*</url-pattern>
   </filter-mapping>
  <welcome-file-list><welcome-file>index.jsp</welcome-file></welcome-file-list>
</web-app>

WebContextFilter

package app.filter;

import javax.servlet.*;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

/**
 * Created by 李卫海 on 2018/1/19.
 */
public class WebContextFilter implements Filter {
   @Override
   public void init(FilterConfig filterConfig) throws ServletException {

   }

   @Override
   public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain chain) throws IOException, ServletException {
      HttpServletResponse response = (HttpServletResponse) servletResponse;
      String origin = (String) servletRequest.getRemoteHost()+":"+servletRequest.getRemotePort();
      response.setHeader("Access-Control-Allow-Origin", "http://127.0.0.1:8081");
      response.setHeader("Access-Control-Allow-Methods", "POST, GET, OPTIONS, DELETE");
      response.setHeader("Access-Control-Allow-Headers", "Authentication,Origin, X-Requested-With, Content-Type, Accept,withCredentials,user_id");
      response.setHeader("Access-Control-Allow-Credentials", "true");
      chain.doFilter(servletRequest, servletResponse);

   }

   @Override
   public void destroy() {

   }
}

APIHomeController 。java

package app.controller;
/**
 * 首页
 * @author 李卫海 2017年11月13日
 *
 */
@CrossOrigin(origins = "*", maxAge = 3600)
@Controller
@RequestMapping("/home")
public class APIHomeController extends APIBaseController {
   @Autowired
   private IHomeBusiness homeBusiness;

   /**
    * app 省接口(所有)
    */
   @RequestMapping(value = "/province")
   @ResponseBody
   public ResultCode<List<DimRegion>>regionProvince(HttpServletRequest request,HttpServletResponse response){

      Cookie[] values = request.getCookies();
      if(values==null||values.length<=0){
         Cookie cookie=new Cookie("sessionid",request.getSession().getId());
         cookie.setMaxAge(3600);
      response.addCookie(cookie);
      }
      System.out.println(values);

      List<DimRegion> list=homeBusiness.regionProvince();

      return new ResultCode<List<DimRegion>>(list);
   }

}

springmvc.xml

<mvc:cors>

   <mvc:mapping path="/home/**"
             allowed-origins="http://127.0.0.1:8081"
             allowed-methods="POST, GET, OPTIONS, DELETE, PUT"
             allowed-headers="Content-Type, Access-Control-Allow-Headers, Authorization, X-Requested-With,Accept,user_id,cookie"
             allow-credentials="true"
             max-age="3600" />
   <!--exposed-headers="header1, header2"-->


</mvc:cors>

前端

<script>

import axios from "axios";

axios.defaults.withCredentials=true;

axios.interceptors.request.use(config => {

config.headers.user_id ='0'

return config

}, error => Promise.reject(error))

 

axios.interceptors.response.use(response => {

//console.log(response);

return response;

},

error => Promise.resolve(error.response))

 

created: function () {

const that = this;

var params = new URLSearchParams();

params.append('logistics_id', 1);

axios

.get("http://127.0.0.1:8080/app/home/province.do", params

).then(function(response) {

//console.log(response.data);

let data = response.data;

console.log(response)

if (data.errcode == 0) {

// that.$nextTick(function(){

// that.logistics=data.data;

// })

 

} else {

Toast(data.errmsg);

}

})

.catch(function(error) {

console.log(error);

//Toast(error);

});

},
</script>

 

展开阅读全文
加载中
点击引领话题📣 发布并加入讨论🔥
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部