2010-08-12 18 views
7

Estoy usando Google CDN para llamar al archivo jQuery 1.4.2 Min en mi aplicación. Un FF, Chrome, Safari, todo funciona muy bien. Pero por alguna razón, me sale un error "Acceso denegado" para el archivo jquery.min.js en la línea 127 ...? No lo entiendo ¿Alguien tiene una pista de por qué esto está actuando de esta manera? No tengo ni idea. ! Screenshot ¿Por qué IE7 e IE8 me dan "acceso denegado" cuando llamo a jQuery?

Código

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js" 
    type="text/javascript"></script> 

.

case 1: 
methodName = "SavePropertyInformation"; 
var HasFoundProperty, PropertyType, NumberOfUnits, 
PropertyAddress, PropertyCity, PropertyState, 
PropertyZipCode, PropertyCounty; 

HasFoundProperty = $("#foundProperty input[type='radio']:checked").val(); 
PropertyType = $('#<%= this.fvApp.FindControl("ddlPropertyType").ClientID %>').val(); 
NumberOfUnits = $('#<%= this.fvApp.FindControl("ddlNumberOfUnits").ClientID %>').val(); 
PropertyAddress = $('#<%= this.fvApp.FindControl("txtPropertyAddress").ClientID %>').val(); 
PropertyCity = $('#<%= this.fvApp.FindControl("txtPropertyCity").ClientID %>').val(); 
PropertyState = $('#<%= this.fvApp.FindControl("ddlPropertyState").ClientID %>').val(); 
PropertyZipCode = $('#<%= this.fvApp.FindControl("txtPropertyZipCode").ClientID %>').val(); 
GetCountyFromZipCode(PropertyZipCode); 
PropertyCounty = GetCounty(); 
data = "{WebAccessID:'" + WebAccessID + "', HasFoundProperty:'" + HasFoundProperty + "', PropertyType:'" + PropertyType + "', NumberOfUnits: '" 
    + NumberOfUnits + "', PropertyAddress: '" + PropertyAddress + "', PropertyCity:'" + PropertyCity 
    + "', PropertyState:'" + PropertyState + "', PropertyZipCode:'" + PropertyZipCode + "',PropertyCounty:'" 
    + PropertyCounty + "' }"; 
doAjaxReq(methodName, data, showSavingDialog); 
break; 
+0

pegue algún código – Chris

+0

Cuando carga el archivo jQuery desde su disco donde reside la aplicación, ¿también recibe ese mensaje con el mismo navegador? – XIII

+0

Acabo de configurarlo para extraer el archivo jQuery localmente y funcionó bien. ¿Debo tratar de usar Google CDN para FF, Chrome y Safari y simplemente usar el archivo local para IE6-8, o debería ir a todos los navegadores locales? – Reaction21

Respuesta

5

Realización de una llamada a un sub dominio es vista como un dominio diferente debido a la Same Origin policy. Asegúrese de configurar document.domain para evitar el acceso denegado con la política Same Origin.

Para sincronizar el document.domain, debe configurarlo en dos lugares. Agregue una etiqueta de script que establezca el dominio, y necesita tener un iframe en la página que establezca lo mismo en el otro dominio.

La página que la llamada Ajax está hecho de "www.example.com" y ha pedido "ajax.example.com":

<script type="text/javascript"> 
    document.domain = "example.com"; 
</script> 
<iframe src="http://ajax.example.com/domainCode.html"></iframe> 

El "domainCode.html" solo contendría la etiqueta script

<html> 
    <head> 
    <script type="text/javascript"> 
     document.domain = "example.com"; 
    </script> 
    </head> 
    <body> 
    </body> 
</html> 

Con eso en su lugar debería poder hablar entre sus subdominios.

+0

¿Es posible hacer algo así en un sitio web que no nos pertenece? mi archivo JS) ¿Podría llevar a cambios bruscos? – Vadorequest

+2

La política de mismo origen impide que toque otros dominios. – epascarello

-1

¿Estás sentado detrás de un servidor de seguridad? Podría estar impidiéndole conectarse y descargar jquery.js.

+1

No. No hay problema de firewall. Funciona bien en FF, Chrome y Safari - Es un problema de IE – Reaction21

0

Asegúrate de que IE no tenga ninguna configuración de proxy, secuencia de comandos de autoconfiguración ni nada de eso en las preferencias. No veo nada malo con tu código.

0

Creo que el problema proviene de una cierta característica de seguridad en Internet Explorer donde no se permite cargar código desde un servidor remoto a menos que el navegador lo considere "de confianza". Según lo que leí, hay casos en que el navegador no se queja de esto, y luego hay otras situaciones en las que no lo permite. No estoy seguro de cuál es el desencadenante específico en su instancia, pero apostaría que esa es la raíz de su problema aquí.

Si yo fuera usted, solo cargaría el jQuery localmente hasta que tenga problemas de rendimiento que le induzcan a hacer lo contrario. Asigne un nombre al archivo jquery-latest.js y, a medida que aparezcan nuevas versiones de JQ, pruébelas localmente primero y luego reemplace el archivo cuando esté seguro de que funciona. O bien, conserve el archivo con nombre de versión y actualice cada página por partes, lo que sea más fácil para su uso de la aplicación.

Fuente: http://geekswithblogs.net/TimH/archive/2006/05/17/78673.aspx

+0

Funcionó localmente en mi entorno de prueba, pero no en el sitio en vivo. ¿Alguna otra idea? – Reaction21

Cuestiones relacionadas