我正在使用一个认为HTTP和HTTPS可以在同一端口共存的应用(MediaCP)。我无法修改代码,因为它使用IonCube和其他一些恶作剧,但我可以编辑JS播放器,或添加文件如果需要的话。由于它已经缩小了,很难知道在哪里寻找,如果你想看一下它我会附上它:https://pastebin.com/DiCnMq32
问题是,当我在HTTP页面上请求.js文件时,它会尝试使用HTTP加载内容,可能是因为它使用///作为请求协议......
我一直在使用ErrorDocument 400将这些请求重定向到HTTPS,但REQUEST_URI在进程中丢失了......
ErrorDocument 400 https://example.com:2000
这项工作对于尝试登录的用户来说很好,但是当输入http://example.com:2000/jwplayer.flash.swf时,它将始终重定向到https://example.com:2000,并且JS代码将无效。
由于https://前缀,我无法使用REDIRECT_服务器变量,这使得Apache认为重定向将转到远程服务器,并且默认情况下它不会发送这些标头。
我无法删除 https://example.com:2000 前缀以使用本地php / cgi文件,因为它会导致无限循环(哦,https错误让我们尝试加载400错误页面,哦https是错误的,让...)。也许使用ScriptAlias会覆盖HTTPS检查?我没有运气,但我会尝试,如果你认为它会使它工作。
我还尝试将%{REQUEST_URI}添加到ErrorDocument行,但似乎变量始终为空。
有什么想法吗?
PS:我在CentOS 7上使用Apache 2.4.25
答案 0 :(得分:0)
尝试在标记中引用JavaScript文件为src="//url/somfolder/somefile.js"
,它应该使用当前的引用前缀http:
或https:
,而无需专门调用它。例如:
<script src="//example.com/script.js"></script>
注意CSS可以类似的方式引用:
<link rel="stylesheet" href="//example.com/style.css">