Tratar de utilizar ajax
, getJSON
, y funciones como que a buscar una URL externa de una (no servidor) equipo de desarrollo local. ¿Hay alguna manera de eludir la misma política de origen, para que pueda realizar pruebas locales, en lugar de tener que subir a un servidor?¿Hay alguna manera de evitar la misma política de origen de Javascript/jQuery para el acceso local?
¿Hay alguna manera de evitar la misma política de origen de Javascript/jQuery para el acceso local?
Respuesta
Dado que este es un problema de desarrollo y no un problema para el usuario final/funcionalidad, en lugar de centrarse en conseguir AJAX para cruzar dominios consiguen el sistema a su entorno de desarrollo como un proxy para buscar los datos más recientes de los servidores de producción. Esto es realmente muy fácil de hacer.
que había necesidad de configurar un servidor web en su entorno de desarrollo (si no tiene uno ya), y luego configurar el servidor para responder a las solicitudes de 404 por ir a buscar y luego haciendo eco de los datos de producción. Puede configurar su servidor para que solo se recojan los archivos de datos AJAX (de lo contrario, será confuso depurar otros archivos si los activos de producción comienzan a aparecer en sus páginas de desarrollo). Entonces, si falta http://dev.myserver.com/data/json/mydata.json
, su script 404 obtendrá http://prod.myserver.com/data/json/mydata.json
y lo repetirá al cliente. Lo bueno de esta configuración es que puedes usar datos simulados muy fácilmente: si el archivo está allí en tu entorno de desarrollo, tu script AJAX lo obtendrá; pero si luego borra o renombra ese archivo, obtendrá los datos de producción en su lugar. Esta característica ha sido tan útil que no puedo recomendarla lo suficiente.
Si está trabajando con XML, lo recomiendo duplicar las cabeceras HTTP en el 404. Si el proceso 404 responde con un Content-Type
de text/html
, no se obtendrá ningún responseXML
a analizar.
Tuvimos la misma necesidad en el desarrollo de nuestra aplicación web. Así es como lo hicimos:
El navegador y el servidor se comunican sólo a través de JSON.
Todo el HTML es interpretado en el navegador usando PURE (nuestro motor de plantillas JS).
El código del navegador se desarrolla a nivel local como esto:
se añade un parámetro host
en el URL de la aplicación:
http://localhost/app.html?host=test.beebole-apps.com
En la producción, el JSON se envían al servidor con un POST.
Pero aquí la función a cargo de la llamada ajax reaccionará al parámetro host
y realizará una inyección JSONP (GET) en su lugar.
<script src="http://test.beebole-apps.com/?callback=f2309892&json={...}" />
f2309892
es una función temporal, con un nombre aleatorio, que apunta al método que controlará la respuestajson
es el JSON que enviamos al servidor
Significa Necesitará una cierta cooperación del backend para servirle al json envuelto en una función de devolución de llamada como:
f2309892(/*the json here*/);
Excepto una limitación de tamaño (no se puede enviar un JSON grande al servidor con un GET) funciona como una brisa.
Otra ventaja es que puede llamar a todos los diferentes sistemas (desarrollo y prueba) desde el mismo servidor local.
Aquí está la respuesta simple: cromo --disable-web-seguridad
A partir del código fuente (chrome_switches.h):
// Don't enforce the same-origin policy. (Used by people testing their sites.)
const char kDisableWebSecurity[] = "disable-web-security";
que quería utilizar jquery.js para enviar llamadas AJAX a un servidor de python de Google Apps que se ejecuta en el puerto 8080. Solo para probarlo, quería ejecutar el navegador y el servidor en la misma máquina.
No entiendo todos los matices de seguridad, pero para el desarrollo temporal parece una solución razonable. Siempre que solo use Chrome para probar con esta bandera, no debería ser un problema.
Aquí está el comando completo para Mac OS X:
/Aplicaciones/Google \ Chrome.app/Contents/MacOS/Google \ Chrome --disable-web-seguridad
Recuerde matar todas las instancias del proceso de Chrome antes de hacer esto o no funcionará. – Ferruccio
tuve ese problema, también , el uso de Chrome y la opción --allow-file-access-from-files
realmente no ayudaron. Volver a la escritura de mi servidor tenía que volver, añadí estas cabeceras a la respuesta y funcionó bien:
'Access-Control-Allow-Origin: http://localhost/'
y otro para permitir una especie de intercambio de claves
'Access-Control-Allow-Headers: X-KEY'
Sin tocar el servidor -
La forma más rápida y sencilla de eludir la misma política de seguridad de origen en Firefox es instalar el complemento Force CORS. Esto funciona con cualquier servicio al insertar los encabezados adecuados en cada respuesta.
Vale la pena mencionar que después de la instalación debe hacer clic en view => toolbars>> add-on bar. Luego, el botón cors se mostrará en la parte inferior derecha, haga clic en eso para habilitarlo. Descomprimí el xpi y veo que hay una función de alternar cuando se presiona un botón, pero nunca se ve el botón. – HMR
localhost no está permitido el uso de CORS http://code.google.com/p/chromium/issues/detail?id=67743 uso lvh.me lugar
- 1. Misma política de origen
- 2. Compruebe si se aplica la misma política de origen
- 3. Deshabilitar la misma política de origen en Android Chrome
- 4. ¿Hay alguna manera de evitar recursiones innecesarias?
- 5. ¿Cuál es el modelo de amenaza para la misma política de origen?
- 6. Origen de aproximadamente: en blanco con respecto a la misma política de origen
- 7. ¿Puedo deshabilitar SOP (la misma política de origen) en cualquier navegador para el desarrollo?
- 8. ¿Hay alguna manera de evitar la búsqueda lineal en esto?
- 9. Por qué la etiqueta HTML SCRIPT no está sujeta a la misma política de origen
- 10. ¿Hay alguna manera de evitar $ this-> en todas partes?
- 11. Leyendo la política de contraseña local programáticamente
- 12. ¿La API de bibliotecas AJAX de Google omite la misma política de origen?
- 13. Moverse por la misma política de origen en javascript sin scripts del lado del servidor
- 14. ¿hay alguna manera de ver el origen de un módulo desde la consola de python?
- 15. WCF REST con jQuery AJAX - eliminando/trabajando alrededor de la misma política de origen
- 16. ¿Cómo se aplica la misma política de origen a las direcciones IP?
- 17. ¿Hay alguna manera de cargar un archivo JS local dinámicamente?
- 18. Jquery .load Misma directiva de origen
- 19. ¿Deshabilitar la misma política de origen/hacer XMLHttpRequests de dominio cruzado en WebKit WebView?
- 20. PhoneGap: ¿Hay alguna manera de evitar que el teclado cambie el tamaño de la vista?
- 21. ¿Existen diferencias sustanciales en la forma en que los navegadores implementan la misma política de origen?
- 22. ¿Hay alguna manera de no enviar cookies cuando se hace un XMLHttpRequest en el mismo origen?
- 23. ¿Hay alguna manera de evitar que UIImagePickerController cambie el estilo de la barra de estado?
- 24. ¿Existe alguna manera de evitar el uso de la reflexión para poblar mi ListView virtual?
- 25. C++: ¿Hay alguna manera de evitar la redundancia con el cambio de declaraciones largas?
- 26. ¿Hay alguna manera de especificar el puerto local para usar en tcpClient?
- 27. Obtener lista de temas de la interfaz de usuario de jQuery - desde una URL (misma política de origen)
- 28. "Misma política de origen" y scripts cargados desde google: ¿una solución vulnerable?
- 29. Ir: ¿Hay alguna manera de evitar la implementación de la ordenación completa? ¿Intercalación para segmentos de estructuras?
- 30. ¿Hay alguna manera de ver el origen de un archivo pcode (.p) en MATLAB?
esto es genial! Me doy cuenta de que no tienes este uso local de PURE en http://beebole.com/pure/documentation/what-is-pure-and-why/ ... Además, ¿puedes ampliar tus palabras un poco para escribir un tutorial en http://beebole.com/pure/documentation/? – ina
también (solo para estar seguro) - 'http: //localhost/app.html? Host = test.beebole-apps.com' está en el lado del cliente (donde tiene el cliente descarga una aplicación con algún tipo de servidor web o pasador de URL en él ...) y llama al servidor 'test.beebole-apps.com'? – ina
PURE es una biblioteca JS que genera HTML a partir de datos JSON. Funciona en el navegador. Si descarga el archivo zip, hay un directorio llamado tutorial con algunos ejemplos. – Mic