当前位置: 首页 > 知识库问答 >
问题:

当涉及到POST请求时,Spring Boot Security和CORS的问题

沈宏朗
2023-03-14

我想保护一个供个人使用的REST服务,并将其用作Angular应用程序的备份,使用这样的方法对方法安全性。

    @PreAuthorize("hasPermission(#id, 'Player', 'expenseReport.allowed')")
    @GetMapping(value = "editplayer")
    @CrossOrigin(origins = crossorg)
    public Player getEditPlayerAuthorize(@RequestParam Long id){
        return fetcher.fetchPlayer(id);
    }

@CrossOrigin注释在哪里工作得很好,但当我在POST请求上尝试相同的注释时,由于CORS,它失败了:

    @PostMapping(value = "login", produces = "application/json")
    @CrossOrigin(origins = crossorg)
    public Login attemptLogin(@RequestBody Login payload) {        
        return handler.attemptLogin(payload);
    }

所以我猜Spring Boot安全性在某种程度上干扰了这一点,但我看不出为什么这只会影响POST请求的解决方案?在我添加Spring Boot Security之前,它们工作得很好。

共有1个答案

杜起运
2023-03-14

>

  • 为@CrossOrigin?添加正确的url(例如前端的localhosturl)。

    可能必须禁用默认启用的csrf。

    请参阅如何解决Spring Boot Post请求中的403错误

    请专家帮助解决这个问题。

  •  类似资料:
    • 当我向我的api发出请求时,chrome会阻止我的请求,原因是内核。在我的firebase云函数上,我添加了response.set('access-control-allow-origin','*');(axios get中的xxxxxx只是隐藏请求url) 然后在我的angular应用程序中,我发出一个http post请求,如下所示 url与请求来自的域不同。 当我测试《邮差》里的一切,一切

    • 我在尝试使后端和前端在不同的本地主机端口(4000和3000)上相互通信(reactjs vanilla NODEjs)时遇到了一些问题 我设法让它工作,直到我想尝试添加数据到我的数据库。我可以用我的react应用程序获取数据,但我不能发布任何数据。以下是双方的代码: 前面 : ' `后退: 我很确定它来自react端,因为当我使用POSTMAN时,发布数据工作正常,在本地主机上过了一段时间后,我

    • 问题内容: 我在端口5000的node.js服务器上设置了CORS,如下所示: 我现在正尝试像这样在从硬盘打开的静态网页中使用JQuery发送AJAX POST请求: 该函数从不调用,并且我得到的唯一警报是来自XHR 处理程序的警报,其中包含以下错误: 我认为CORS配置合理, 我缺少什么? 编辑 :对于我而言,我能找到的最佳解决方案是从服务器发送页面: 问题答案: 这是我正在使用的代码。它位于我

    • 问题内容: 我有一个使用安全性约束来锁定对资源访问的Java Web应用程序。当Ajax请求需要身份验证时,我试图操纵HTTP 401响应,因此我创建了一个过滤器,该过滤器观察响应中的HTTP状态,并在需要时进行相应的修改。 问题是,如果需要身份验证,则直到将401发送到浏览器后,过滤器才会被调用。安全约束似乎在请求处理链中的过滤器之前。我的过滤器的url模式比任何安全约束都更通用。平台是WebS

    • 问题内容: 我有一个网页正在IE8和Firefox中泄漏内存;Windows Process Explorer中显示的内存使用量只是随着时间的推移而不断增长。 下面的页面请求“ unplanned.json” URL,它是一个永不改变的静态文件(尽管我确实将HTTP标头设置为确保Ajax请求始终通过)。当得到结果时,它将清除HTML表,遍历从服务器返回的json数组,并为数组中的每个条目动态地向H

    • 我刚刚开始使用Postman测试我正在集成到的API。 我有以下错误不断出现 无效的CORS请求 注意以下几点: API使用承载令牌身份验证(OAuth2)。我有这个工作没有问题 到目前为止,我发现: 使用邮递员与Http POST请求-我没有得到粗体的部分 以防其他人遇到同样的问题,以下是解决方法。在chrome浏览器中https://www.getpostman.com/docs/captur