OS : WIN7 x64
架构/流程: ddns --- 内网映射 ----> localhost:8888 ---- nginx 反向代理 ----> 127.0.0.1:80
问题场景: 访问ddns域https:/xxx.com(443端口), 本地首页解析出部分被定义成为 http://xxx.com/loading.css(80端口) 的资源文件, 此时就产生了
,也就是跨域了(跨协议与跨端口)
问题位置: /app/function/web.function.php 64 行 http_type 方法内 。其实这个方法写法也没错,只是不够兼容(暂时没有考虑到 当反向代理 后的 $_SERVER里没有 HTTPS、HTTP_X_FORWARDED_PROTO、SERVER_PORT这些属性时,http_type 方法检测协议将变成无效动作了)
解决方案: 1、更全面的考虑到不通架构下的 scheme 属性检测方案,但这个方案不太保险。因为咱无法预知终端使用环境,继而 64行 http_type 内预定义的属性检测方案存在不确定性,个人推荐方案2);
2、/app/function/web.function.php 74 行 get_host方法内弃用 http_type 的结果,直接由 '//'替代,如此前端各请求会自适应当前地址栏使用的协议类型。(即 get_host 由原来的 return $protocol.$host; 调整为 return '//'.$host;)
下图[error1 - bug001]

下图[ok1 -bug002]

下图[ok2 - bug003]

下图[error2 - bug004]

------------------------------------- 打个广告 ------------------------------------------
你们看现在工作也不好找,我都还没上班,谁有资源给介绍份工作嘛?
------------------------------------ 广州 · 番禺 ----------------------------------------