ajax传map到后台报错

首先报了post415的错,按照网上修改contentType之后,就报了如图所示的错误,网上说是跨域,可是传String类型的就不会出错,求各位大佬帮忙指点一下


确实跨域了原始端口63342跨域端口8080

那这个怎么解决呢

你是用的是注解@crossorigin(origins="*"),添加加个

origins="*"允许所有域名或者开放使用具体的63342那个具体的域名

又是注解不起作用,可以看一看这个

https://blog.csdn.net/testcs_dn/article/details/86537605?utm_medium=distribute.pc_relevant.none-task-blog-baidujs-1

string确实可以传
因为这是跨域的安全机制
如果你想让设备处于所有人都可以访问的状态 可以改request中header的origin属性
但是这么做可能存在安全风险
如果不是什么涉及密码涉及安全的接口完全可以开出来。

需要后端配合配下cors

或者换成jsonp

1、是springMVC的版本要在4.2或以上版本才支持@CrossOrigin

2、非@CrossOrigin没有解决跨域请求问题,而是不正确的请求导致无法得到预期的响应,导致浏览器端提示跨域问题。

3、在Controller注解上方添加@CrossOrigin注解后,仍然出现跨域问题,解决方案之一就是:

在@RequestMapping注解中没有指定Get、Post方式,具体指定后,问题解决。


参考

1、官方文档https://spring.io/blog/2015/06/08/cors-support-in-spring-framework

2、http://fanshuyao.iteye.com/blog/2384189

2、https://blog.csdn.net/taiyangnimeide/article/details/78305131

3、https://blog.csdn.net/snowin1994/article/details/53035433

添加了这个,可还是一样的跨域报错...

@crossorigin(origins="*")

然后也指定了method = RequestMethod.POST

注解不好用,吧注解注释掉,换第二种全局配置,试试

直接设置头部response.setHeader("Access-Control-Allow-Origin","*");



在controller里加上这一段?可还是没有变化呀...


response.setHeader("Access-Control-Allow-Origin","*");

这一句放在哪呀


方便的话发一把工程代码,我帮你调试一下2450957609@qq.com

或者加一下QQ,发一下项目文件,这里发文件不方便

一般不用注解的啊,用过滤,添加拦截器

springboot 的配置 我的
/**
 * 前后端分离场景
 * 同源设置
 * @return
 */
private CorsConfiguration buildConfig() {
    CorsConfiguration corsConfiguration = new CorsConfiguration();
    corsConfiguration.addAllowedOrigin("*");
    corsConfiguration.addAllowedHeader("*");
    corsConfiguration.addAllowedMethod("*");
    return corsConfiguration;
}

/**
 * 同源过滤器设置
 * @return
 */
@Bean
public CorsFilter corsFilter() {
    UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
    source.registerCorsConfiguration("/**", buildConfig());
    return new CorsFilter(source);
}


你最好不要像那样全部的,你给定一个目录下

直接代理转发

1、前端请求设置

2、后台请求头设置Credentials为true

我这里对请求头有限制,你可以根据自己需要的调整,这样做比较安全些