Adobe Granite Cross-Origin Resource Sharing Policy (
com.adobe.granite.cors.impl.CORSPolicyImpl
)
将使用匹配这些值的第一个策略。 如果未找到,则任何 CORS 请求被拒绝。
如果未配置任何策略, CORS 由于处理程序被禁用,因此请求也不会得到应答 — 只要服务器的其他模块没有响应 CORS.
Dispatcher缓存顾虑和配置
dispatcher-caching-concerns-and-configuration
从Dispatcher 4.1.1开始,可以缓存响应标头。 这使得可以缓存 CORS 标头以及 CORS-requested resources(请求为匿名)。
通常,在Dispatcher缓存内容的相同考虑因素也可以应用于在Dispatcher缓存CORS响应标头。 下表定义何时 CORS 标头(以及因此 CORS 请求)进行缓存。
身份验证状态
AEM 发布
AEM Author上的Dispatcher缓存仅限于静态的非创作资源。 这使得在AEM Author上缓存大多数资源(包括HTTP响应标头)变得困难和不实际。
AEM 发布
避免在经过身份验证的请求上缓存CORS标头。 这符合不缓存经过身份验证的请求的常见指南,因为很难确定请求用户的身份验证/授权状态将如何影响投放的资源。
AEM 发布
可以在Dispatcher中缓存的匿名请求也可以缓存其响应标头,以确保将来的CORS请求可以访问缓存的内容。 AEM Publish上的任何CORS配置更改
必须
随后使受影响的缓存资源失效。 最佳实践要求在代码或配置部署中清除Dispatcher缓存,因为很难确定哪些缓存内容可能会受到影响。
允许CORS请求标头
允许必需的
要传递到AEM以进行处理的HTTP请求标头
,它们必须在Dispatcher的
/clientheaders
配置。
/clientheaders {
"Origin"
"Access-Control-Request-Method"
"Access-Control-Request-Headers"
# CORS HTTP response headers
# https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS#the_http_response_headers
/headers {
"Access-Control-Allow-Origin"
"Access-Control-Expose-Headers"
"Access-Control-Max-Age"
"Access-Control-Allow-Credentials"
"Access-Control-Allow-Methods"
"Access-Control-Allow-Headers"
请记住 重新启动Web服务器应用程序 在对进行更改之后 dispatcher.any
文件。
可能需要完全清除缓存,以确保在之后的下一个请求中正确缓存标头 /cache/headers
配置更新。
CORS疑难解答
日志记录位于 com.adobe.granite.cors
: