2012-09-04 12 views
6

Ho lavorato in questa vacanza per scoprire che il mio codice non funzionerà su HTTPS. My LOCALDEV è HTTP e il nostro server di produzione è HTTPS.YUI 3 sta per yui.yahooapis.com per ottenere il codice. Sono HTTPS e contenuto bloccato

Per qualche motivo YUI uscirà per ottenere JS, quando lo ho localmente.

enter image description here

ce l'ho sul server ...........

enter image description here

E infine il mio codice:

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

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

Questo dopo che ho aggiunto: base: 'include/javascript/yui3/build'

enter image description here

non ho quella directory nel mio build.

risposta

8

TLDR.: provare a impostare la proprietà base config nella vostra chiamata a YUI.

non ho usato YUI, ma in generale, le richieste da un sito HTTPS devono sempre colpito altri siti HTTPS (altrimenti vedrete avvertimenti contenuti non protetti, o richieste bloccati come hai scoperto). Ecco il problema.

hai 2 opzioni mi viene in mente per risolvere questo problema:

  1. Configura YUI per richiedere da un sito HTTPS. Google's AjaxAPIs l'ha ospitato e did support SSL, ma sembra essere stato rimosso da Google's list of hosted libraries. A post in the YUI forums by a YUI developer in 2011 indica che Google ha interrotto l'hosting di nuove versioni di YUI a causa del fatto che la CDN di Google non supporta la gestione combinata. Quindi non è davvero un'opzione, e alcune persone sono del parere che sia lo external scripts loaded over HTTPS are bad.

  2. Configurare YUI per caricare il contenuto dal server locale. Ciò richiede che il tuo javascript non sia solo presente localmente, ma verrà anche servito dal tuo server su un particolare URL.Oltre a rendere il tuo punto di tag iniziale script allo script YUI ospitato localmente, è looks like configurare il caricamento lato client è fatto impostando la proprietà di configurazione base nella chiamata a YUI (o comboBase se si utilizza un caricatore combo - ma ciò significherebbe dovresti set up your own YUI combo loader).

Ad esempio, se il lib YUI è disponibile presso https://mydomain.com/static/js/yui_3.6.0/yui/build/ (e la pagina è, diciamo https://mydomain.com/sample/page), allora si potrebbe effettuare le seguenti operazioni:

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

E poi nei file javascript:

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

(o forse base: '/static/js/yui_3.6.0/yui/build/'; non ho un server a portata di mano per testare su - si prega di riferire che ha funzionato, se del caso!)

+0

Ha funzionato ma ora sta chiedendo BUILDAUTOCOMPLETE e non ce l'ho. –

+1

Ci scusiamo per la risposta tardiva - sembra che tu abbia dimenticato di includere la barra finale ('base: 'include/javascript/yui3/build /'', non 'base: 'include/javascript/yui3/build'') – Caspar

+0

Aggiornamento di richieste non protette refernce: https://developers.google.com/web/fundamentals/security/prevent-mixed-content/ fixing-mixed-content? hl = it – Sanka

0

Sembra che tu stia servendo il file iniziale yui-min.js dal CDN. Trovare questa:

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

sostituirlo per puntare alla copia locale di YUI:

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

che dovrebbe funzionare e servire i JS necessari dal tuo server locale.

Tuttavia, questo non avrà alcun carico combo, che farà sì che la pagina da caricare (a volte un molto più lento È possibile leggere un buon articolo su combo carico YUI localmente a http://blog.endpoint.com/2011/02/locally-served-yui3.html

+0

JSHIRLEY vi si contattarmi al michaelwjoyner a g-mail-dot.com –

+0

Devi comunque configurare la proprietà 'base' per il JavaScript necessario da caricare sul tuo server. –

+0

In realtà, non lo fai (almeno non con 3.5+) - se stai caricando, verrà automaticamente caricato Loader. Ancora una volta, non hai alcun caricamento combo, però. – jshirley

20

Ho pensato di condividere la mia esperienza nella speranza che qualcun altro possa essere aiutato. Potrebbe non funzionare per gli altri o no. stavo richiedendo l'URL seguente: http://yui.yahooapis.com/combo?2.6.0/build/yahoo-dom-event/yahoo-dom-event.js&2.6.0/build/animation/animation-min.js

Ma serviva https, così ho semplicemente cambiato da http a https e ottenuto un avviso di sicurezza che il CERT non era valido per il dominio. Ho esaminato i domini validi e ho notato un "yui-s" e ho pensato "Hmmmm secure version?"

Allora ho provato questo: 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

che ha funzionato meravigliosamente. Quindi, altri cercano solo cambiando a https e se il vostro sottodominio è "Yui" cambiarlo in "Yui-s"

Spero che questo aiuti qualcuno

+2

Heads up: Sto scoprendo che molte cose che esistono su yui.yahooapis.com mancano da yui-s.yahooapis.com. Le versioni precedenti di YUI2, quelle della "galleria YUI", ecc. Che funzionano bene sull'host yui, mancano a yui-s. –

+0

@FrankFarmer grazie - Credo di essere stato fortunato con il mio file, ma per qualcun altro suppongo che valga la pena provare. Se non altro, puoi scaricare il file localmente come suggerisce jshirley – SeanDowney

Problemi correlati