关于我的 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 的安全性的说明 [重复]

使用 REST 触发 Spark 作业

Tomcat Web 服务器上的 Spring REST 服务

在 Grails 的 Spring Security Rest Plugin 中注销时出现 404

spring关于urlpattern