【问题标题】:YUI 3 is going to yui.yahooapis.com to get code. I am HTTPS and content blockedYUI 3 将前往 yui.yahooapis.com 获取代码。我是 HTTPS 并且内容被阻止
【发布时间】:2013-12-12 23:58:13
【问题描述】:

我在这个假期工作,发现我的代码无法在 HTTPS 上运行。我的 LOCALDEV 是 HTTP,我们的生产服务器是 HTTPS。

由于某种原因,当我在本地拥有 JS 时,YUI 会出去获取 JS。

我在服务器上…………

最后是我的代码:

    YUI().use('autocomplete', 'autocomplete-filters', 'autocomplete-highlighters', function (Y) {

    var notes = [
        "Dr Follow Up Complete Notes",
        "Fax Document Notes",
        "Event Notes",
        "Email Information Notes",
        "Corresponding Document Notes",
        "Return Call Notes",
        "Admit Notes",
        "Discharge Notes",
        "Other Notes",
        "Excellent Resource Notes",
        "Good Resource Notes",
        "Neutral Resource Notes",
        "Poor Resource Notes",
        "Unacceptable Resource Notes",
    ];

    var inputNode = Y.one('#name');

    inputNode.plug(Y.Plugin.AutoComplete, {
        resultFilters    : 'phraseMatch',
        resultHighlighter: 'phraseMatch',
        source           : notes,
        minQueryLength   : 0
    });
    inputNode.ac.get('boundingBox').setStyle('zIndex', 50);
    inputNode.on('focus', function () {
        inputNode.ac.sendRequest('');
    })

================================================ ====================================

这是在我添加之后:base: 'include/javascript/yui3/build'

我的构建中没有那个目录。

【问题讨论】:

    标签: yui


    【解决方案1】:

    我想我会分享我的经验,希望可以帮助其他人。可能不适用于他人。 我正在请求以下网址: http://yui.yahooapis.com/combo?2.6.0/build/yahoo-dom-event/yahoo-dom-event.js&2.6.0/build/animation/animation-min.js

    但需要 https,所以我只是将其从 http 更改为 https 并收到安全警告,表明证书对域无效。我查看了有效域并注意到一个“yui-s”并认为“嗯嗯安全版本?”

    然后我尝试了这个: https://yui-s.yahooapis.com/combo?2.6.0/build/yahoo-dom-event/yahoo-dom-event.js&2.6.0/build/animation/animation-min.js

    效果非常好。所以其他人尝试更改为 https,如果您的子域是“yui”,则将其更改为“yui-s”

    希望这对某人有所帮助

    【讨论】:

    • 请注意:我发现 yui.yahooapis.com 上存在的很多内容在 yui-s.yahooapis.com 中丢失了。 yui-s 中缺少旧版本的 YUI2、“YUI 库”中的任何东西等在 yui 主机上运行良好的东西。
    • @FrankFarmer 谢谢 - 我想我的文件很幸运,但对于其他任何人,我认为值得一试。如果不出意外,您可以按照 jshirley 的建议在本地下载文件
    【解决方案2】:

    TLDR:尝试在对 YUI 的调用中设置 base 配置属性。

    我没有使用过 YUI,但一般来说,来自 HTTPS 站点的请求应该始终访问其他 HTTPS 站点(否则您会看到不安全的内容警告,或者您发现请求被阻止)。所以这就是问题所在。

    我可以想到两个选项来解决这个问题:

    1. 将 YUI 配置为从 HTTPS 站点请求。 Google's AjaxAPIs 确实托管了它和 did support SSL,但它似乎已从 Google's list of hosted libraries 中删除。 post in the YUI forums by a YUI developer in 2011 表示由于 Google 的 CDN 不支持组合处理,Google 停止托管新版本的 YUI。所以这不是一个真正的选择,有些人认为external scripts loaded over HTTPS are bad 无论如何。

    2. 配置 YUI 以从本地服务器加载内容。这要求您的 javascript 不仅在本地存在,而且还将由您的服务器在特定 URL 处提供。除了使您的初始 script 标记指向您本地托管的 YUI 脚本之外,它 looks like 配置客户端加载是通过在您对 YUI 的调用中设置 base 配置属性来完成的(或者 comboBase 如果您正在使用一个组合加载器——但这意味着你必须set up your own YUI combo loader)。

    例如,如果您的 YUI 库位于 https://mydomain.com/static/js/yui_3.6.0/yui/build/(并且您的页面位于,例如 https://mydomain.com/sample/page),那么您可以执行以下操作:

    <script src="https://mydomain.com/static/js/3.6.0/yui/build/yui-min.js"></script>
    

    然后在你的 javascript 文件中:

    YUI({ 
        base: 'static/js/yui_3.6.0/yui/build/'
    }).use('node', 'event', function(Y) { 
        ...
    })
    

    (或者可能是base: '/static/js/yui_3.6.0/yui/build/';我没有方便测试的服务器 - 请报告哪个有效,如果有的话!)

    【讨论】:

    • 它有效,但现在它要求 BUILDAUTOCOMPLETE 而我没有。
    • 抱歉,回复晚了 - 似乎您可能忘记包含斜杠(base: 'include/javascript/yui3/build/',而不是 base: 'include/javascript/yui3/build'
    【解决方案3】:

    看起来您正在从 CDN 提供初始 yui-min.js 文件。找到这个:

    <script type="text/javascript" src="http://yui.yahooapis.com/..."></script>
    

    将其替换为指向您本地的 YUI 副本:

    <script type="text/javascript" src="/where/you/put/yui/build/yui/yui-min.js"></script>
    

    这应该可以工作并从您的本地服务器上提供必要的 JS。

    但是,这不会有任何组合加载,这将导致页面加载(有时会很多慢。您可以在http://blog.endpoint.com/2011/02/locally-served-yui3.html阅读一篇关于本地加载 YUI 的好文章 p>

    【讨论】:

    • JSHIRLEY 可以通过 g-mail-dot.com 的 michaelwjoyner 与我联系
    • 您仍然需要配置 base 属性,以便从服务器加载必要的 JavaScript。
    • 实际上,你不需要(至少在 3.5+ 中没有)——如果你正在加载,它会自动设置 Loader。同样,您没有任何组合加载。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-23
    • 2016-01-17
    • 2016-05-04
    • 1970-01-01
    • 2020-10-18
    相关资源
    最近更新 更多