SpringBoot/JQuery/Ajax跨域问题(附加前后端交互GET/POST请求小demo)
Jquery-ajax-springboot 跨域问题再现。
SpringBoot/JQuery/Ajax跨域问题(附加前后端交互GET/POST请求小Demo)
环境: Jquery + Spring Boot
【1】Access to XMLHttpRequest…by CORS policy
Access to XMLHttpRequest at ‘http://localhost:8082/felix/login‘ from origin ‘http://127.0.0.1:5500‘ has been blocked by CORS policy: No ‘Access-Control-Allow-Origin’ header is present on the requested resource.
解决办法:
在后端 Spring Boot 中加入注解:@CrossOrigin
,详见页面底部完整示例。
【2】net::ERR_FAILED 415、400,外加报错 1
ajax 中缺少 【contentType】。如果后端出现:
Resolved [org.springframework.web.HttpMediaTypeNotSupportedException: Content type 'application/x-www-form-urlencoded;charset=UTF-8' not supported]
此类错误。正确的是:
"contentType": "application/json;charset=utf-8"
,详见页面底部完整示例。所要传输的数据和
contentType
不匹配。这就依靠仔细检查了…
【3】关于 json 和 jsonp …
jsonp 不支持 POST 跨域,所以会自动转成 GET.
所以还是用 json 吧…
【4】前端总是执行 error ,而不执行 success
dataType
这个属性啊,就是标志着返回值的格式,如果不是严格的对应格式,就执行不到 success。
完整示例
说明:
示例中包含两个接口:登录接口、新闻接口
提示:
jquery-3.6.0.min.js
需要自行下载。代码后面有部分说明。
前端:
1 |
|
后端:
请新建Spring Boot项目,注意,在入口函数的同级包下创建其他包、Java文件,例如,SpringBootHelloApplication 的包名为 com.felix.demo,那么其他的包就要在此包名下面创建。
创建一个DemoController
,和一个实体类,叫做 User
。
注意包名的修改!
DemoController
1 | package com.felixcjy.springboothelloword.controller; |
User
1 | package com.felixcjy.springboothelloword.pojo; |
接口示例:
注意修改端口和主机地址
新闻接口(GET):
接口URL | http://localhost:8080/felix/news |
---|---|
请求方式 | GET |
Content-Type | application/json |
请求结果:
1 | { |
登录接口(POST):
接口URL: | http://localhost:8080/felix/login |
---|---|
请求方式: | POST |
Content-Type | application/json |
请求体:
1 | { |
返回结果:
1 | { |
参考
- ajax几种请求几种类型 - 好好學習 - 博客园 (cnblogs.com)
- Jquery AJAX 跨域POST 请求__IT民工的博客-CSDN博客_jquery跨域post请求
- 解决ajax跨域问题【5种解决方案】_itcats_cn的博客-CSDN博客_ajax跨域
- Ajax提交之后,Method从POST变成GET_bellah521的博客-CSDN博客
- jQuery dataType指定为json的问题,不执行回调函数_wangxingguangwin的博客-CSDN博客
- Ajax发送POST请求 - 简书 (jianshu.com)
- 使用Ajax方法获取return返回值_xiongdaandxiaomi的博客-CSDN博客_ajax返回值怎么取出来
- 前端与后端接口的交互案例_明月几时有666的博客-CSDN博客_前端调用后端接口示例
- 前端 - POST提交数据的三种请求方式_kelly0721的博客-CSDN博客_前端post请求