【发布时间】:2024-05-19 18:05:01
【问题描述】:
我正在使用一个认为 HTTP 和 HTTPS 可以在同一个端口上共存的应用程序 (MediaCP)。我无法修改代码,因为它使用了 IonCube 和其他一些恶作剧,但我可以编辑 JS 播放器,或者在需要时添加文件。由于它是缩小的,因此很难知道在哪里寻找,如果您想看一下,我附上它:https://pastebin.com/DiCnMq32
问题是,当我在 HTTP 页面上请求 .js 文件时,它会尝试使用 HTTP 加载内容,可能是因为它使用 /// 作为请求协议...
- 如果输入 https://mywebsite.com,则 jwplayer.js 文件会加载 https://example.com:2000/jwplayer.flash.swf 并且可以正常工作
- 如果输入 http://mywebsite.com,则 jwplayer.js 文件会尝试加载 http://example.com:2000/jwplayer.flash.swf,但由于服务器显然预期 HTTPS 握手而失败并出现 400 错误。使用 https 加载 jwplayer.js 并不重要。
我一直在使用 ErrorDocument 400 将这些请求重定向到 HTTPS,但 REQUEST_URI 在进程中丢失了...
ErrorDocument 400 https://example.com:2000
这对尝试登录的用户来说很好,但是当输入http://example.com:2000/jwplayer.flash.swf时,它总是会重定向到https://example.com:2000,并且JS代码将不起作用。
我不能使用 REDIRECT_ 服务器变量,因为 https:// 前缀,这使 Apache 认为重定向将发送到远程服务器,默认情况下它不会发送这些标头。
我无法删除 https://example.com:2000 前缀来使用本地 php / cgi 文件,因为它会导致无限循环(哦,https 错误让我们尝试加载 400 错误页面,哦 https 是错了,让...)。也许使用 ScriptAlias 会覆盖 HTTPS 检查?我没有任何运气,但如果您认为它会成功,我会尝试。
我也尝试将 %{REQUEST_URI} 添加到 ErrorDocument 行,但变量似乎始终为空。
有什么想法吗?
PS:我在 CentOS 7 上使用 Apache 2.4.25
【问题讨论】:
标签: apache https http-status-code-400