关于我的 spring rest service40 的 jQuery 和 403 错误和 cors 问题 [重复]
Posted
技术标签:
【中文标题】关于我的 spring rest service40 的 jQuery 和 403 错误和 cors 问题 [重复]【英文标题】:jQuery and 403 error and cors issue about my spring rest service40 [duplicate] 【发布时间】:2019-12-01 12:20:27 【问题描述】:Spring API 运行顺利。当我收到此错误消息时 尝试通过客户端访问数据。即使我添加了 Cors, 问题没有改善。下面我将分享我的休息控制器和 ajax 方法。
错误:
这是我的 spring rest api url:
http://localhost:8080/getAllPLayers
我也已经在我的控制器中添加了 CrossOrigin 注释
@CrossOrigin(origins = "http://localhost:8000/")
@RestController
public class Controller
@Autowired
FootballService footballService;
//**PLAYER**
@GetMapping(value="/getAllPLayers")
public List<Player> getAllPlayers()
return footballService.getPlayerList();
依赖关系
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
这里是ajax调用函数
$( document ).ready(function()
$("#getAllPlayers").click(function(event)
event.preventDefault();
ajaxGet();
);
function ajaxGet()
$.ajax(
type : "GET",
url : "http://localhost:8080/getAllPLayers/",
success: function(result)
/*****/
alert("success!");
$('#getResultDiv ul').empty();
var playerList = "<table border='1'>";
playerList += "<tr><td>Name</td><td>Surname</td><td>Age</td></tr>";
$.each(result, function(i, player)
playerList +="<tr>";
playerList +="<td>"+player.playerName +"</td>";
playerList +="<td>"+player.playerSurname+"</td>";
playerList +="<td>"+player.playerAge+"</td>";
playerList +="</tr>";
);
playerList +="</table>";
$('#getResultDiv').append(playerList)
console.log("Success: ", result);
,
error : function(e)
$("#getResultDiv").html("<strong>Error</strong>");
console.log("ERROR: ", e);
);
)
HTML 部分
<!-- *** Players *** -->
<h3 style="color: darkolivegreen" ><strong>Player System</strong></h3>
<div class="col-sm-7" style="margin:20px 0px 20px 0px">
<button id="getAllPlayers">Get all players</button>
<div id="getResultDiv" style="padding:20px 10px 20px 50px">
<ul class="list-group">
</ul>
</div>
</div>
<!-- *** -->
我不知道我在哪里做错了。
【问题讨论】:
你添加了spring安全依赖吗?如果您不使用它,可以将其删除并尝试。 我添加了依赖项和 html 部分。 服务器正在向 GET 请求发回 403 错误响应。 403错误的原因与你的CORS配置无关。 【参考方案1】:为 CORS 问题添加过滤器类,如下所示
import javax.servlet.http.HttpServletResponse;
import javax.servlet.Filter;
import org.springframework.stereotype.Component;
@Component
public class SimpleCORSFilter implements Filter
public SimpleCORSFilter()
log.info("SimpleCORSFilter init");
@Override
public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException
HttpServletRequest request = (HttpServletRequest) req;
HttpServletResponse response = (HttpServletResponse) res;
response.setHeader("Access-Control-Allow-Origin", request.getHeader("Origin"));
response.setHeader("Access-Control-Allow-Credentials", "true");
response.setHeader("Access-Control-Allow-Methods", "POST, GET, OPTIONS, DELETE");
response.setHeader("Access-Control-Max-Age", "3600");
response.setHeader("Access-Control-Allow-Headers", "Content-Type, Accept, X-Requested-With, remember-me");
chain.doFilter(req, res);
@Override
public void init(FilterConfig filterConfig)
@Override
public void destroy()
【讨论】:
我只有一个控制器,我添加了控制器的开头,在顶部一一共享代码。我已经用正确的 url 尝试了 cors。 8000端口有javascript应用,8080端口是我自己的spring rest api。 更新答案 Filter接口的正确导入是什么?以及“日志”的来源 这里不需要日志,从导入中删除,从javax.servlet.Filter
导入过滤器
我已删除,但如何清楚地导入过滤器?以上是关于关于我的 spring rest service40 的 jQuery 和 403 错误和 cors 问题 [重复]的主要内容,如果未能解决你的问题,请参考以下文章
如何简单地添加指向 Spring Data REST 实体的链接
关于基于 Spring 安全 URL 的安全性的说明 [重复]
Tomcat Web 服务器上的 Spring REST 服务