2009-11-05 25 views
13

tengo que hacer petición Ajax cruz de dominio - Aquí está mi códigoEl acceso a URI restringido denegado "código" 1012 - dominio Cruz petición Ajax

$.ajax(
     { 
      url: redirectURL, 
      data: $('#login-container form').serialize() + querystring, 
      type: 'post', 
      cache: false, 
      dataType: 'jsonp', 
      jsonp: 'jsonp_callback', 
}); 

Error: [Exception... "Access to restricted URI denied" code: "1012" nsresult: "0x805303f4 (NS_ERROR_DOM_BAD_URI)" location: "http://testsite/assets/scripts/jquery-1.3.2.js Line: 19"] 
Source File: http://testsite/assets/scripts/jquery-1.3.2.js 
Line: 19 

tengo la comprobación de los siguientes enlaces también -

Access to restricted URI denied code: 1012

$.ajax(
     { 
    url: redirectURL+'?callback=?', 
      data: $('#login-container form').serialize() + querystring, 
      type: 'post', 
      cache: false, 
      dataType: 'html' }); 

He intentado devoluciones de llamada en la url también. Ya había visto todos los enlaces en stackoverflow con respecto a este problema ... pero no he podido superar esto ¿Alguien puede ayudarme y decirme cómo superarlo? Gracias

+1

¿Cómo es la URL del tipo y más importante: ¿realmente volver jsonp datos ? – jitter

+0

¿Controla el dominio/sitio al que hace la solicitud de Ajax? ¿Está configurado con una respuesta json, o una respuesta jsonp? – Stobor

+0

¿Y tiene una función javascript llamada 'jsonp_callback' definida en su página? – Stobor

Respuesta

30

No podrás hacer un dominio cruzado Solicitud POST en el navegador.

Si está realizando una llamada JSONP para acceder a una URL entre dominios, puede usar el método getJSON de JQuery. Esto le permitiría hacer una solicitud GET solamente. Si puede enviar su información de inicio de sesión a redirectURL usando los parámetros GET, puede hacer que esto funcione.

Tenga en cuenta que POSTing a los formularios de inicio de sesión remotos es quizás el mejor ejemplo de por qué los navegadores no permiten solicitudes entre dominios como esta. No quiere que una página que se parece a su banco pueda servirle datos desde el sitio web de su banco, lo que haría una página de phishing muy efectiva.

Por otro lado, si realmente quiere evitar esto, puede escribir algún código del lado del servidor que, dados los parámetros de entrada, realice una solicitud posterior a redirectURL y canalice la respuesta.

Por favor, dime que no estás escribiendo una página de phishing.

+20

+1 para "Por favor, dime que no estás escribiendo una página de phishing". – Boldewyn

+1

comentario divertido. Pero a veces sucede que debe hacerlo cuando el GoDaddy QSC (carrito de compras rápido) de su cliente está configurado y, desde las páginas de aterrizaje/presencia públicas, su cliente desea algún mecanismo de autenticación para saber si el usuario registrado tiene suficientes privilegios. para que pueda mostrarle la versión animada de su versión basada en flash de Subscriber-Only-Magazine alojada en un servicio como [http://ISSUE.com] (http://ISSUE.com), en lugar de la versión anterior. -styled-Download-PDF-button. !!! –

+1

esto ya no es cierto; puede realizar solicitudes POST a servidores que lo permitan con los encabezados CORS apropiados. – oberhamsi

0

"Me tienen que hacer de dominio petición Ajax cruz"

No se puede hacer eso, a menos que:

  • que está utilizando la grasa mono
  • usted está haciendo una Solicitud jsonp que no es realmente ajax
+0

y adivina qué. si miras su código, él hace una solicitud de jsonp – jitter

+0

. ¿Podrías sugerirme una manera de usar $ .ajax para acceder a mi redirectURL –

3

JSONP no es realmente Ajax de una manera que no usa XMLHttpRequest sino un elemento dinámico script. jQuery hace que este transparente, pero JSONP todavía requiere lo siguiente para trabajar:

  1. HTTP GET solamente, no se puede utilizar POST s
  2. el servidor necesita para apoyarlo envolviendo la respuesta en una llamada a la que callback Especifique

Compruebe si la URL que solicita admite JSONP y cambie la llamada a HTTP GET.

8

Una forma de hacerlo es utilizar el servidor como proxy:

AJAX Request   -> Your server -> Server of interest 

AJAX Response Handler <- Your server <- Server of interest 
2

Si lo hace controlar el servidor remoto, también, en los navegadores recientes (IE8, FF3.5) puede superar la cruz -dominio obstáculo:

IE's XDomainRequest method y the W3C's and Mozillas Origin-Header.

En resumen, si el servidor envía de vuelta la cabecera HTTP

Access-Control-Allow-Origin: * 

con la respuesta AJAX, IE y Mozilla lo aceptarán, incluso si la solicitud procede de un dominio diferente. Puede restringir los dominios de solicitud permitidos reemplazando el * con ellos.

0

ejecutarlo en cualquier servidor como Apache o WAMP ...

, no vale da un error ...

NS_ERROR_DOM_BAD_URI: Access to restricted URI