2012-09-04 18 views
6

He trabajado estas vacaciones para descubrir que mi código no funcionará en HTTPS. Mi LOCALDEV es HTTP y nuestro servidor de producción es HTTPS.YUI 3 va a yui.yahooapis.com para obtener el código. Soy HTTPS y el contenido está bloqueado

Por alguna razón, YUI va a obtener JS, cuando lo tengo a nivel local.

enter image description here

lo tengo en el servidor ...........

enter image description here

Y por último, mi código:

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

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

esto es después añadí: Base: 'include/javascript/YUI3/build'

enter image description here

no tengo ese directorio en mi construcción.

Respuesta

8

TLDR.: intente configurar la propiedad de configuración base en su llamada a YUI.

No he usado YUI, pero en general, las solicitudes de un sitio HTTPS siempre deberían afectar a otros sitios HTTPS (de lo contrario, verá advertencias de contenido no seguro o solicitudes bloquearse como has descubierto). Ese es el problema.

tiene 2 opciones que se me ocurre para solucionar este problema:

  1. Configurar YUI a petición de un sitio HTTPS. Google's AjaxAPIs lo tenía alojado y did support SSL, pero parece que se ha eliminado de Google's list of hosted libraries. Un post in the YUI forums by a YUI developer in 2011 indica que Google dejó de alojar nuevas versiones de YUI debido a que el CDN de Google no admite el manejo de combo. Entonces eso no es realmente una opción, y algunas personas opinan que external scripts loaded over HTTPS are bad de todos modos.

  2. Configure YUI para cargar el contenido de su servidor local. Esto requiere que su javascript no solo esté presente localmente sino que también será servido por su servidor en una URL particular.Además de hacer que su etiqueta inicial script apunte a su script YUI hospedado localmente, looks like configurando la carga del lado del cliente se hace configurando la propiedad config base en su llamada a YUI (o comboBase si está usando un cargador combinado, pero eso significaría tendrías que llamar al set up your own YUI combo loader).

Por ejemplo, si su lib YUI está disponible en https://mydomain.com/static/js/yui_3.6.0/yui/build/ (y su página está en, digamos https://mydomain.com/sample/page), entonces es posible hacer lo siguiente:

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

Y luego, en sus archivos javascript:

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

(o posiblemente base: '/static/js/yui_3.6.0/yui/build/'; no tengo un servidor útil para poner a prueba el - por favor informar que funcionó, si los hay!)

+0

Funcionó, pero ahora está pidiendo BUILDAUTOCOMPLETE y no tengo eso. –

+1

Perdón por la respuesta tardía: parece que se olvidó de incluir la barra diagonal ('base: 'incluir/javascript/yui3/build /' ', no' base:' incluir/javascript/yui3/build'') – Caspar

+0

Actualización de solicitudes inseguras refernce: https://developers.google.com/web/fundamentals/security/prevent-mixed-content/ fixing-mixed-content? hl = es – Sanka

0

Parece que está sirviendo el archivo inicial yui-min.js del CDN. Encuentra este:

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

sustituir a la que apunte a su copia local de Yui:

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

que deben trabajar y servir a los JS necesarios fuera de su servidor local.

Sin embargo, esto no tendrá ninguna carga combinado, lo que hará que la página se cargue (a veces un mucho más lenta Puede leer un buen artículo sobre combo YUI carga en destino, en http://blog.endpoint.com/2011/02/locally-served-yui3.html

+0

JSHIRLEY le contacto conmigo en michaelwjoyner en g-mail-dot.com –

+0

Aún necesita configurar la propiedad 'base' para que el JavaScript necesario se cargue en su servidor. –

+0

En realidad, no (al menos no con 3.5+): si está cargando, configurará automáticamente Loader. Nuevamente, no tienes ninguna carga combinada, sin embargo. – jshirley

20

Pensé que compartiría mi experiencia con la esperanza de que alguien más pueda ser ayudado. Puede no funcionar para otros o no. estaba solicitando la siguiente 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

Pero necesitaba https, por lo que simplemente cambié de http a https y tengo una advertencia de seguridad de que el certificado no es válido para el dominio. Miré dominios válidos y noté un "yui-s" y pensé "Hmmmm versión asegurada".

entonces yo probamos este: 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

que funcionó maravillosamente. Así que otros tratan sólo cambiar a https y si su subdominio es "Yui" cambiarlo a "Yui-s"

Espero que esto ayude a alguien

+2

Heads up: Estoy descubriendo que muchas cosas que existen en yui.yahooapis.com faltan en yui-s.yahooapis.com. Versiones anteriores de YUI2, cualquiera de las cosas de la "galería de YUI", etc. que funciona bien en el host yui no se encuentra en yui-s. –

+0

@FrankFarmer gracias - Creo que tuve suerte con mi archivo, pero para cualquier otra persona, supongo que vale la pena intentarlo. Si nada más, puedes descargar el archivo localmente como jshirley sugiere – SeanDowney

Cuestiones relacionadas