侧边栏壁纸
博主头像
落叶人生博主等级

走进秋风,寻找秋天的落叶

  • 累计撰写 130562 篇文章
  • 累计创建 28 个标签
  • 累计收到 9 条评论
标签搜索

目 录CONTENT

文章目录

React 中 fetch 的跨域与cookie共享

2024-05-12 星期日 / 0 评论 / 0 点赞 / 96 阅读 / 2937 字

最近新开了一个项目,前端使用react,后端使用springmvc。数据的交互使用ES6的新API:fetch。由于存在跨域问题,react下fetch的参数,和后端springmvc都要做相应的配置

最近新开了一个项目,前端使用react,后端使用springmvc。数据的交互使用ES6的新API:fetch。由于存在跨域问题,react下fetch的参数,和后端springmvc都要做相应的配置。

####前端请求:

fetch(requestData(your_url,'POST',{email:email,password:password}))        .then(response => response.json())        .then(json => console.log(json)function getRequestData(url, method, params) {    if(!method) {        method = 'GET';    }    let requestParam = {        method: method,        mode: 'cors',        credentials: "include",        headers: new Headers({            'Accept': 'application/json',            'Content-Type': 'application/json'        })    };    if (params != null) {        Object.assign(requestParam, {body: JSON.stringify(params)});    }    return new Request(url, requestParam);}

####JAVA代码

  1. web.xml 配置

     <filter>     <filter-name>cors</filter-name>     <filter-class>com.dommain.filter.CORSFilter</filter-class> </filter> <filter-mapping>     <filter-name>cors</filter-name>     <url-pattern>/mobile/*</url-pattern> </filter-mapping>

2.CORSFilter 代码

package com.domian.filter;import javax.servlet.*;import javax.servlet.http.HttpServletResponse;import java.io.IOException;public class CORSFilter implements Filter {    @Override    public void destroy() {    }    @Override    public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException {        HttpServletResponse response = (HttpServletResponse) res;         //前端react项目的域名        response.setHeader("Access-Control-Allow-Origin", "http://localhost:3500");        response.setHeader("Access-Control-Allow-Methods", "POST, GET, OPTIONS, DELETE");        response.setHeader("Access-Control-Max-Age", "3600");        //设置允许访问cookie        response.setHeader("Access-Control-Allow-Credentials", "true");        response.setHeader("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");        chain.doFilter(req, res);    }    @Override    public void init(FilterConfig filterConfig) throws ServletException {    }}
  1. controller 代码

    @RequestMapping("/dologin")@ResponseBodypublic User login(@RequestBody Map<String, String> user) {    Subject subject = SecurityUtils.getSubject();    UsernamePasswordToken token = new                         UsernamePasswordToken(user.get("email"), user.get("password"));    subject.login(token);    return currentUserService.getCurrentUser();}

广告 广告

评论区