我用创建了一个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 tomee原型进行REST开发?
发布于 2018-04-12 17:09:23
如果您查看失败请求的响应头,您可能会看到一个头X-CSRF-Token: Required。CSRF令牌保护您的应用程序用户不会成为在应用程序中执行不需要的操作的攻击的受害者。
因此,任何状态更改操作,如PUT和POST,都需要一个有效的CSRF令牌,以确保调用该操作的经过身份验证的用户确实想要执行该操作。CSRF令牌可以作为任何以前的无副作用请求的一部分来获取,比如GET。只需将头X-CSRF-Token: fetch附加到请求并从响应头X-CSRF-Token: abc123中提取返回值即可。最后,确保将提取的值作为下一个修改请求的X-CSRF-Token: abc123 header发送。那么一切都应该像预期的那样工作。
有关更多信息,您可以咨询:http://www2.hu-berlin.de/newlogic/docs/config/filter.html#CSRF_Prevention_Filter_for_REST_APIs/Basic_configuration_sample
发布于 2018-04-12 16:35:17
S4SDK的默认安全配置包含一个跨站点请求伪造(CSRF)预防过滤器-注释它以使REST API开发变得简单-但要知道CSRF problem和how CSRF relates to cookies -本质上确保在添加这些注释之前和之后不会在REST应用程序中使用cookies:
<!-- 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>
-->https://stackoverflow.com/questions/49791717
复制相似问题