ssl - Typo3 多域与 ssl : TOO_MANY_REDIRECTS

标签 ssl cross-domain typo3 extbase realurl

使用 typo3 4.5/extbase 1.3 我正在尝试在多域环境中运行我的商店扩展:商店页面应在 HTTP 域 A 上运行,以下结帐过程应在 HTTPS 域 B 上运行。域 B 是 https://www.ssl-id.de/[domainA](主机是 Strato)。因此我设置了:

  1. 两根页面树的两个根分别具有域 A 和域 B 的域条目
  2. HTTPS 页面树中​​的结帐页面已将“使用协议(protocol)”设置为 HTTPS
  3. 有条件地将 TS:baseURL 设置为域 A 或域 B(基于 ENV:HTTP_HOST)
  4. 为两个域设置了 realurl 配置(使用 $TYPO3_CONF_VARS['EXTCONF']['realurl']['[domainA]'] 和 $TYPO3_CONF_VARS['EXTCONF']['realurl']['www.ssl -id.de'])

不幸的是,从 HTTP 商店重定向到 HTTPS 结帐导致 chrome 中出现错误 310 (net::ERR_TOO_MANY_REDIRECTS)。网络报道说

Request URL:https://www.ssl-id.de/[domainA]/de/checkout.html?FE_SESSION_KEY=bc04cd0f5b835bcbdd8c475bafb037f7-ab3700f6a9fae520b75981130b31ec77&cHash=6d7e7195735947b09becbfa9c26c8bf0
Request Method:GET
Status Code:301 Moved Permanently
Request Headersview source
Accept:text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Charset:ISO-8859-1,utf-8;q=0.7,*;q=0.3
Accept-Encoding:gzip,deflate,sdch
Accept-Language:de-DE,de;q=0.8,en-US;q=0.6,en;q=0.4
Cache-Control:max-age=0
Connection:keep-alive
Cookie:fe_typo_user=bc04cd0f5b835bcbdd8c475bafb037f7
Host:www.ssl-id.de
User-Agent:Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.4 (KHTML, like Gecko) Chrome/22.0.1229.94 Safari/537.4
Query String Parametersview URL encoded
FE_SESSION_KEY:bc04cd0f5b835bcbdd8c475bafb037f7-ab3700f6a9fae520b75981130b31ec77
cHash:6d7e7195735947b09becbfa9c26c8bf0
Response Headersview source
Connection:Keep-Alive
Content-Length:0
Content-Type:text/html; charset=utf-8
Date:Wed, 07 Nov 2012 09:54:06 GMT
Keep-Alive:timeout=3, max=99
Location:https://www.ssl-id.de/[domainA]/de/checkout.html?FE_SESSION_KEY=bc04cd0f5b835bcbdd8c475bafb037f7-ab3700f6a9fae520b75981130b31ec77&cHash=6d7e7195735947b09becbfa9c26c8bf0
Server:Apache/2.2.21 (Unix) mod_ssl/2.2.21 OpenSSL/0.9.8r
Set-Cookie:fe_typo_user=bc04cd0f5b835bcbdd8c475bafb037f7; path=/[domainA]/
X-Powered-By:PHP/5.3.8

显示为“目标页面 url 不存在,请再次查看相同的 url”。当使用第二个 HTTP url 而不是 HTTPS url 时,设置运行良好。在没有从商店页面重定向的情况下直接调用结帐页面时,结果是相同的错误 310。

.htaccess 是一个非常标准的 typo3-realurl .htaccess:

AddDefaultCharset utf-8

AddType video/mp4 mp4
AddType video/mp4 m4v
AddType video/ogg ogv
AddType video/webm webm
AddType video/webm webmv

<FilesMatch "\.(js|css)$">
  <IfModule mod_expires.c>
    ExpiresActive on
    ExpiresDefault "access plus 7 days"
  </IfModule>
  FileETag MTime Size
</FilesMatch>

<IfModule mod_rewrite.c>

RewriteEngine On
#RewriteBase /

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.+)\.(\d+)\.(php|js|css|png|jpg|gif|gzip)$ $1.$3 [L]

RewriteRule ^(typo3/|t3lib/|fileadmin/|typo3conf/|typo3temp/|uploads/|favicon\.ico) - [L]

RewriteRule ^typo3$ typo3/index_re.php [L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-l
RewriteRule .* index.php [L]

</IfModule>

关于如何消除重定向问题或如何更接近导致无限循环的重定向调用者的任何建议?

最佳答案

问题是特定于主机 (Strato) 的:他们的 SSL 代理不发送相关的 $_SERVER['HTTPS'],这不知何故使 typo3 变得疯狂。

解决方案是通过将以下行添加到 localconf.php 的末尾来自行设置 $_SERVER['HTTPS']:

if ($_SERVER['HTTP_X_FORWARDED_HOST'] == "www.ssl-id.de") {  
    $_SERVER['HTTPS'] = 1;  
}

或更一般的

if (this_is_a_ssl_request()) {  
    $_SERVER['HTTPS'] = 1;  
}

关于ssl - Typo3 多域与 ssl : TOO_MANY_REDIRECTS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13268360/

相关文章:

oracle - 数据库服务器 TLS 配置。故障 TNS-00542 : SSL Handshake failed

javascript - 发送电子邮件时出现 SSL 错误,无法连接到 Postfix

typo3 - 如何在 TypoScript 中创建条件以将不同的 JavaScript 文件加载到不同的后端布局? (打字3)

php - Typo3 +TV 不渲染内容元素

php - 对 Cloudflare 网站的请求

github - Hexo 在部署到 Github 存储库时更改了 Github 上的自定义域

javascript - Cookie 不会存储在本地主机中

javascript - 如何在 IE8 中使用 XDomainRequest 实现 SOAP 调用

typo3 - RTE 显示我自己的 CSS 类作为选择的正确配置是什么?

ssl - 谁能在 Github 或 Bitbucket 的上下文中解释 SSH、SSL、HTTPS?