apache AEM作为云服务多域CORS配置

fkvaft9z  于 2023-05-23  发布在  Apache
关注(0)|答案(1)|浏览(142)

我遇到了一个问题,我的调度器CORS配置,调试这是证明是疯狂的挑战。

环境-

AEM作为云服务。Web应用程序正在使用几个内容片段模型API。Web应用有3个非prod环境,每个环境都有自己的域,所有三个域都命中同一个aem示例来消耗模型API。

问题-

CORS响应只缓存第一个请求者(比如domain1.com),直到缓存过期。来自其他来源(例如domain2.com和domain3.com)的后续CORS请求失败,因为缓存的来源与当前请求者的来源不同(即使它们是我们策略下的“允许来源”)。
CORS策略已阻止从源“https://www.example.com”访问位于“https://publish-p12345-e12345.adobeaemcloud.com/content/wknd/us/en/api/experiments.model.json”的XMLHttpRequestdomain2.com:“Access-Control-Allow-Origin”标头的值“https:domain1.com”不等于提供的源。

AEM设置-

  1. OSGi配置(com.adobe.granite.cors.impl.CORSPolicyImpl
{
  "allowedpaths": [".*"],
  "alloworigin": ["https://domain1.com","https://domain2.com","https://domain3.com"],
  "alloworiginregexp": [],
  "exposedheaders": [],
  "maxage:Integer": 1800,
  "supportedheaders": ["Origin","Accept","X-Requested-With","Content-Type","Access-Control-Request-Method","Access-Control-Request-Headers"],
  "supportedmethods": ["HEAD","GET"],
  "supportscredentials": false
}
  1. /conf.d/available_vhosts/wknd.vhost
<Directory />
....
Header merge Vary Origin
....
</Directory>

<IfModule mod_headers.c>
# Multi domain CORS support
SetEnvIfNoCase Origin "https?://(www\.)?(domain1\.com|domain2\.com|domain3\.com)(:\d+)?$" ACAO=$0
Header set Access-Control-Allow-Origin %{ACAO}e env=ACAO
Header set Vary Origin

<LocationMatch "\.(json)$">
Header set Cache-Control "max-age=600,stale-while-revalidate=86400,stale-if-error=86400" "expr=%{REQUEST_STATUS} < 400"
Header set Age 0
</LocationMatch>
</IfModule>

也试过

  • 删除Vary Origin
  • Header总是加上Access-Control-Allow-Origin,都没用。

1.未在conf/dispatcher.d/available_farms/wknd.farm/publishfarm/headers中缓存任何CORS标头

/headers {
 "Cache-Control"
 "Content-Disposition"
 "Content-Type"
 "Expires"
 "Last-Modified"
 "X-Content-Type-Options"
 "Surrogate-Control"
}

1.向conf/dispatcher.d/clientheaders添加访问控制头

$include "./default_clientheaders.any"
"Origin"
"Access-Control-Request-Method"
"Access-Control-Request-Headers"

谁能在过去的指导下解决这个问题?

vshtjzan

vshtjzan1#

我现在正在处理与CORS请求完全相同的问题,并且在几个类似的论坛上读到后续的请求被阻止。您是否尝试过删除OSGI配置,只运行vhost配置?这两种配置可能相互冲突。

相关问题