6

私はこの休日に働いて、自分のコードが HTTPS で動作しないことを確認しました。私の LOCALDEV は HTTP で、本番サーバーは HTTPS です。

何らかの理由で、私がローカルに持っているときに、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'

ここに画像の説明を入力

私のビルドにはそのディレクトリがありません。

4

3 に答える 3

24

他の誰かが助けられることを願って、私の経験を共有したいと思いました. 他の人にとってはうまくいかないかもしれません。次の URL をリクエストしていました。 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」に変更します

これが誰かを助けることを願っています

于 2013-12-12T15:58:13.200 に答える
9

TLDR : baseYUI への呼び出しで config プロパティを設定してみてください。

私は YUI を使用したことはありませんが、一般的に言えば、HTTPS サイトからのリクエストは常に他の HTTPS サイトにヒットするはずです (そうしないと、安全でないコンテンツの警告が表示されたり、発見したようにリクエストがブロックされたりします)。それが問題です。

これを修正するために私が考えることができる2つのオプションがあります:

  1. HTTPS サイトから要求するように YUI を構成します。Google の AjaxAPIはそれをホストし、SSL をサポートしていましたが、 Google のホストされたライブラリのリストから削除されたようです。2011 年の YUI 開発者による YUI フォーラムへの投稿は、 Google の CDN がコンボ処理をサポートしていないため、Google が YUI の新しいバージョンのホストを停止したことを示しています。したがって、それは実際には選択肢ではなく、HTTPS 経由でロードされる外部スクリプトはとにかく悪いという意見もあります。

  2. ローカル サーバーからコンテンツをロードするように YUI を構成します。これには、JavaScript がローカルに存在するだけでなく、特定の URL でサーバーによって提供される必要があります。最初のscriptタグがローカルでホストされている YUI スクリプトを指すようにすることは別として、YUI への呼び出しで config プロパティを設定することによって、クライアント側の読み込みを構成するように見えます (または、コンボ ローダーを使用している場合は、独自の YUI コンボ ローダーをセットアップする必要があります)。basecomboBase

たとえば、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/'; テストするのに便利なサーバーを持っていません - もしあれば、どれが機能したかを報告してください!)

于 2012-09-04T02:51:56.877 に答える
0

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 を提供するはずです。

ただし、これにはコンボの読み込みがないため、ページの読み込みが遅くなることがあります (場合によっては非常に遅くなります。YUIをローカルで読み込むコンボについては、http://blog.endpoint.com/2011/02/locallyで良い記事を読むことができます)。 -served-yui3.html

于 2012-09-04T02:48:43.123 に答える