我一直在尝试使用service.getNavigation()
方法,但显然请求 URI 太长导致此错误:
Request-URI Too Long
The requested URL's length exceeds the capacity limit for this server.
是否有可以解决此问题的 spartacus 配置?或者这应该在云(ccv2)配置中处理?
我一直在尝试使用service.getNavigation()
方法,但显然请求 URI 太长导致此错误:
Request-URI Too Long
The requested URL's length exceeds the capacity limit for this server.
是否有可以解决此问题的 spartacus 配置?或者这应该在云(ccv2)配置中处理?
不确定您具体谈论的是哪个服务以及您在那里传递了哪些数据。对于初学者,请阅读:https ://developer.mozilla.org/en-US/docs/Web/HTTP/Status/414
此外,如果您可以谈谈您正在使用的服务以及您尝试传递/获取的数据,这将使每个人受益。
导航组件正在触发对所有 componentId 的请求。如果您的导航包含很多(根?)元素,则 HTTP GET 请求的最大长度对于给定的客户端或服务器可能太长。
加载组件的初始实现实际上是通过 POST 请求完成的,但给人的印象是我们不需要支持包含这么多组件的请求。我想我们错了。
幸运的是,遗留的基于 POST 的请求仍在代码库中,它是OccCmsComponentAdapter.findComponentsByIdsLegacy
.
使用此代码的最简单方法是提供一个CustomOccCmsComponentAdapter
, 扩展自OccCmsComponentAdapter
. 然后您可以覆盖该findComponentsByIds
方法并简单地调用super.findComponentsByIdsLegacy
并传入参数的副本。
更简洁的方法是覆盖CmsComponentConnector
并直接将负载委托给adapter.findComponentsByIdsLegacy
. 我不会从这里开始,因为它更复杂。使用第一种建议的方法进行 POC。