原谅我,这样子来表达自己的心情,说真的 我已经被这个错误逼疯了。网上一堆重复的东西,我都服了,全都sb吗??? 气死我了。还好,黄天不负有心人,劳资终于解决掉了。
一、请耐心看完1.我的问题怎么产生的
说一下,我后端是springboot2.0版本,前端是vue, 后端springboot用shiro 控制了一下权限,进行授权登录的,就这样子我按照网上说的 解决了跨域 能够登录进去了,get请求也能发送了,但是就是post请求发送不出去。
看看这个是我的报错,炸眼一看,非常容易看成是跨域,但是我跨域解决了啊,我get请求都能发送出去,就是post请求发送不出去,从网上找了一堆这种的解决方案 不是让你把解决跨域,就tm的整了一堆破烂放上去,刷浏览量。我都服了,能不能好好解决,不能好好解决把文章删除了可以么?? 浪费我的时间。(我又吐槽了) 原谅我,我真的是受不了网上的那帮sb博主了(但我不是一棒子打死,还是有非常好的博主),破烂博主我就不说了。影响心情。
1.先说说我怎么解决跨域的。
我的后端项目是springboot. 用shiro控制的认证和授权。我解决跨域用的是Filter来解决的。
直接上代码
@Configuration
public class CrossOriginConfig implements Filter {
@Override
public void init(FilterConfig filterConfig) throws ServletException {
}
@SuppressWarnings("unused")
public void doFilter(ServletRequest req, ServletResponse res,
FilterChain chain) throws IOException, ServletException {
HttpServletResponse response = (HttpServletResponse) res;
HttpServletRequest request = (HttpServletRequest) req;
//跨域请求,*代表允许全部类型
response.setHeader("Access-Control-Allow-Origin", "http://192.168.3.253:8080");
//允许请求方式
response.setHeader("Access-Control-Allow-Methods", "POST, GET, OPTIONS, DELETE,PUT");
//用来指定本次预检请求的有效期,单位为秒,在此期间不用发出另一条预检请求
response.setHeader("Access-Control-Max-Age", "86400");
//请求包含的字段内容,如有多个可用哪个逗号分隔如下
response.setHeader("Access-Control-Allow-Headers", "Content-Type,application/json");
//访问控制允许凭据,true为允许
response.setHeader("Access-Control-Allow-Credentials", "true");
//这里很重要,一定要。否则你post请求就会和我一样的
String type = request.getMethod();
if(type.toUpperCase().equals("OPTIONS")){
return;
}
chain.doFilter(req, res);
}
@Override
public void destroy() {
}
}
注意!!!,这里没有完事,shiro里还没有写呢
MapfilterChainDefinitionMap = new linkedHashMap<>(); filterChainDefinitionMap.put("myFormAuthCorsFilter",new CrossOriginConfig()); shiroFilterFactoryBean.setFilters(filterChainDefinitionMap);
有的博主就tm给我截取一小段,我都不知道这段代码放在哪里tm的 我都服了。
我打出来的那段代码是让你们直接复制过去的(省事就完了)
注意:你加入的这个方法一定要在块之前。
剩下的就没有了,别听网上的那些博主一顿乱bb我都tm的疯了。
反正我就是这个样子解决的。
但是能不能解决你的问题我就不清楚了。好了,发泄完了。
goodbye 宝贝们。



