2012-09-04 15 views
6

Pracowałem na tym święcie, aby dowiedzieć się, mój kod nie działa na HTTPS. Mój LOCALDEV to HTTP, a nasz serwer produkcyjny to HTTPS.YUI 3 przejdzie na yui.yahooapis.com, aby uzyskać kod. Jestem HTTPS i treść zablokowana

Z jakiegoś powodu YUI zamierza uzyskać JS, gdy mam go lokalnie.

enter image description here

mam ją na serwerze ...........

enter image description here

I wreszcie mój kod:

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(''); 
    }) 

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

TO PO I dodaje: podstawa: 'include/javascript/yui3/build'

enter image description here

nie mam tego katalogu w moim kompilacji.

Odpowiedz

8

TLDR.: spróbuj ustawić właściwość base config w wywołaniu YUI.

I nie był używany YUI, ale ogólnie rzecz biorąc, wnioski ze strony HTTPS zawsze powinien trafić do innych witryn HTTPS (inaczej zobaczysz niezabezpieczone ostrzeżenia treści lub żądania Zablokuj się, jak odkryłeś) Więc to jest problem

Masz 2 opcje mogę myśleć, aby rozwiązać ten problem:

  1. Konfiguruj YUI do żądania ze strony HTTPS. Google's AjaxAPIs go hostował i did support SSL, ale wydaje się, że został usunięty z Google's list of hosted libraries. A post in the YUI forums by a YUI developer in 2011 oznacza, że ​​Google przestał hostować nowe wersje YUI z powodu CDN firmy Google, która nie obsługuje obsługi kombi. Więc to nie jest opcja, a niektórzy ludzie są zdania, że ​​tak czy inaczej.

  2. Skonfiguruj YUI, aby załadować zawartość z lokalnego serwera. Wymaga to, aby twój javascript był nie tylko lokalnie obecny, ale będzie również obsługiwany przez twój serwer pod określonym adresem URL.Oprócz wprowadzenia początkowego znacznika script do lokalnego hostowanego skryptu YUI, konfigurowanie ładowania po stronie klienta jest wykonywane przez ustawienie właściwości konfiguracyjnej base w twoim wywołaniu YUI (lub comboBase, jeśli używasz programu ładującego kombinację - ale to by znaczyło musiałbyś set up your own YUI combo loader).

Na przykład, jeśli YUI lib jest dostępny na https://mydomain.com/static/js/yui_3.6.0/yui/build/ (a strona jest, powiedzmy https://mydomain.com/sample/page), to możesz wykonać następujące czynności:

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

a potem w plikach javascript:

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

(lub ewentualnie base: '/static/js/yui_3.6.0/yui/build/'; nie mam serwer przydatny do testowania on - zgłoś który pracował z powrotem, jeśli w ogóle!)

+0

To zadziałało, ale teraz prosi o BUILDAUTOCOMPLETE, a ja tego nie mam. –

+1

Przepraszam za spóźnioną odpowiedź - wydaje się, że mogłeś zapomnieć o włączeniu końcowego slasha ('base: 'include/javascript/yui3/build /'', a nie 'base: 'include/javascript/yui3/build'') – Caspar

+0

Aktualizowanie niezabezpieczonych żądań refernce: https://developers.google.com/web/fundamentals/security/prevent-mixed-content/ fixing-mixed-content? hl = en – Sanka

0

Wygląda na to, że obsługujesz początkowy plik yui-min.js z CDN. Znajdź to:

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

Wymień że aby wskazać lokalną kopię YUI:

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

To powinno działać i służyć niezbędne JS od lokalnego serwera.

Jednak to nie będzie miało żadnego załadunku kombi, która spowoduje, że strona załadować (czasami dużo wolniej Możesz przeczytać dobry artykuł o kombi załadunku YUI lokalnie http://blog.endpoint.com/2011/02/locally-served-yui3.html

+0

JSHIRLEY będzie się ze mną skontaktować w michaelwjoyner na g-mail-dot.com –

+0

Nadal musisz skonfigurować właściwość 'base' dla potrzebnego skryptu JavaScript, który ma zostać załadowany z twojego serwera. –

+0

W rzeczywistości nie (przynajmniej nie z 3.5+) - jeśli ładujesz, to automatycznie ustawi ładowarkę. Znowu jednak nie masz żadnego ładowania combo. – jshirley

20

Pomyślałem, że podzielę się moim doświadczeniem w nadziei, że komuś innemu można pomóc. Może nie działać dla innych lub nie. byłem zainteresowanie następujący adres: http://yui.yahooapis.com/combo?2.6.0/build/yahoo-dom-event/yahoo-dom-event.js&2.6.0/build/animation/animation-min.js

Ale potrzebne https, więc ja po prostu zmienił go z http na https i dostał ostrzeżenie, że bezpieczeństwo cert nie była ważna dla domeny. Sprawdziłem prawidłowe domeny i zauważyłem "yui" i pomyślałem "Wersja zabezpieczona Hmmmm?"

Następnie próbowałem to: 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

Który pracował cudownie. Tak inni próbują po prostu zmienia się od https, a jeśli subdomena to „Yui” zmienić na „Yui-s”

Nadzieja to pomaga ktoś

+2

Heads up: Zauważyłem, że na stronie yui-s.yahooapis.com brakuje wielu rzeczy, które istnieją na stronie yui.yahooapis.com. Starsze wersje YUI2, którekolwiek z rzeczy z "galerii YUI" itp., Które działają dobrze na hoście Yui, brakuje w yui-s. –

+0

@FrankFarmer dzięki - myślę, że mam szczęście z moim plikiem, ale dla każdego innego, przypuszczam, że warto spróbować. Jeśli nic więcej, możesz pobrać plik lokalnie, jak sugeruje jshirley – SeanDowney