[英]Vaadin + Spring Boot returns 403 Forbidden error on PUT, POST, DELETE requests
[英]REST with S/4HANA Cloud SDK: Tomee archetype project returns 403 forbidden on POST/PUT/DELETE
我创建了一个S4SDK项目,
mvn archetype:generate -DarchetypeGroupId=com.sap.cloud.s4hana.archetypes \
-DarchetypeArtifactId=scp-cf-tomee -DarchetypeVersion=LATEST
并且我将HelloWorldServlet
修改为具有doPost
方法,但根本无法获得POST请求。 我总是收到HTTP状态403禁止响应。
如何使用S / 4HANA Cloud SDK原型进行REST开发?
如果查看失败请求的响应标头,则可能会看到标头X-CSRF-Token: Required
。 CSRF令牌可保护您的应用程序用户免受攻击,使其免受在您的应用程序中执行有害操作的攻击。
因此,任何状态更改操作(例如PUT
和POST
)都需要一个有效的CSRF令牌,以确保该操作确实是调用它的经过身份验证的用户想要的。 可以将CSRF令牌作为任何先前的无副作用请求(例如GET
一部分进行提取。 只需将标头X-CSRF-Token: fetch
到您的请求中,然后从响应标头X-CSRF-Token: abc123
提取返回的值。 最后,确保将提取的值作为下一个修改请求的X-CSRF-Token: abc123
标头发送。 然后一切都会按预期进行。
有关更多信息,您可以查询: http : //www2.hu-berlin.de/newlogic/docs/config/filter.html#CSRF_Prevention_Filter_for_REST_APIs/Basic_configuration_sample
S4SDK的默认安全配置包含一个跨站点请求伪造(CSRF)预防过滤器-对其进行注释以使REST API开发变得简单-但请注意CSRF问题以及CSRF与cookie的关系 -实质上确保在其中不使用cookie。添加以下注释之前和之后的REST应用程序:
<!-- disabled to make REST work - AUTHN/AUTHZ MUST NOT USE COOKIES!
<filter>
<filter-name>RestCsrfPreventionFilter</filter-name>
<filter-class>org.apache.catalina.filters.RestCsrfPreventionFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>RestCsrfPreventionFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
-->
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.