使用rest-services创建实体对象时跨域错误

创建了一个rest-services进行复杂的实体类对象的创建功能。

当访问这个service时,报错如下:http://localhost:8080/*****/rest/v2/services/Rest_ApiService/rest_commitTrainning
Response to preflight request doesn’t pass access control check: No ‘Access-Control-Allow-Origin’ header is present on the requested resource. Origin ‘http://localhost:8081’ is therefore not allowed access.
image

REST API 默认是允许跨域访问的。
你用的Framework是哪个版本?

找到问题了,是高版本的tomcat不允许在url里存在中括号。已经处理掉了。

但是现在服务端接收到的json好像有问题,报错:
c.h.a.r.a.c.RestControllerExceptionHandler- Exception in REST controller
com.google.gson.JsonSyntaxException: com.google.gson.stream.MalformedJsonException: Use JsonReader.setLenient(true) to accept malformed JSON at line 1 column 10 path $
我从前端请求里截取出来的json转译后排查,并没有发现有问题的地方,url格式大概如下:
http://localhost:8080/app/rest/v2/services/Rest_ApiActivityService/rest_commitActivities?activity={“user”:{“id”:“----”},“type”:“ONLINE_TRAIN”,“date”:“2019-12-12+18:38:18.406”,“actStatus”:“FORMAL”}&agency[]={“id”:“----”}&agency[]={“id”:“----”}&training={“trainingMode”:“VIDEO”,“speaker”:“3”,“numbers”:“3”,“subject”:“3”,“remark”:“20191212-06”}

怎么能看看接收到的json是什么样的呢?

可以用 postman ,API 测试的首推工具。

1赞

搜索“json转换”,有很多在线帮你检测的工具。比如http://www.bejson.com/:
image

你的引号是中文。注意用个合适的编辑器,或者我截图的这个,如果引号对,颜色是不一样的。
其他的还有逗号、冒号等都注意下。

已经处理了。是因为发送post请求时的请求头设置有问题。
另外,我发的是url的格式,不能直接拿来用json格式检查工具检查。
中文符号可能是因为我粘贴过来的时候使用的是中文输入法。