jsonpcallback ejemplo domain datatype cross jquery ajax json cors jsonp

ejemplo - jsonp jquery



Falta el encabezado CORS ''Access-Control-Allow-Origin'' (5)

Llamo a esta función desde mi formulario asp.net y obtengo el siguiente error en la consola firebug mientras llamo ajax.

Solicitud de origen cruzado bloqueada: la misma política de origen no permite leer el recurso remoto en http://anotherdomain/test.json . (Motivo: falta el encabezado CORS ''Access-Control-Allow-Origin'').

var url= ''http://anotherdomain/test.json''; $.ajax({ url: url, crossOrigin: true, type: ''GET'', xhrFields: { withCredentials: true }, accept: ''application/json'' }).done(function (data) { alert(data); }).fail(function (xhr, textStatus, error) { var title, message; switch (xhr.status) { case 403: title = xhr.responseJSON.errorSummary; message = ''Please login to your server before running the test.''; break; default: title = ''Invalid URL or Cross-Origin Request Blocked''; message = ''You must explictly add this site ('' + window.location.origin + '') to the list of allowed websites in your server.''; break; } });

Lo he hecho de manera alternativa pero aún no puedo encontrar la solución.

Nota: No tengo derechos de servidor para realizar cambios en el lado del servidor (API / URL).


Debe haber tenido la idea de por qué tiene este problema después de pasar por las respuestas anteriores.

self.send_header(''Access-Control-Allow-Origin'', ''*'')

Solo tiene que agregar la línea anterior en el lado del servidor.


Debe modificar el código del lado del servidor, como se indica a continuación

public class CorsResponseFilter implements ContainerResponseFilter { @Override public void filter(ContainerRequestContext requestContext, ContainerResponseContext responseContext) throws IOException { responseContext.getHeaders().add("Access-Control-Allow-Origin","*"); responseContext.getHeaders().add("Access-Control-Allow-Methods", "GET, POST, DELETE, PUT"); } }


El lado del servidor pone esto encima de .php:

header(''Access-Control-Allow-Origin: *'');

Puede establecer acceso de restricción de dominio específico:

header(''Access-Control-Allow-Origin: https://www.example.com'')


Esto sucede generalmente cuando intenta acceder a los recursos de otro dominio.

Esta es una característica de seguridad para evitar que todos accedan libremente a cualquier recurso de ese dominio (al que se puede acceder, por ejemplo, para tener una copia exacta de su sitio web en un dominio pirata).

El encabezado de la respuesta, incluso si es 200OK, no permite que otros orígenes (dominios, puerto) accedan a los recursos.

Puede solucionar este problema si es el propietario de ambos dominios:

Solución 1: a través de .htaccess

Para cambiar eso, puede escribir esto en el archivo .htaccess del archivo de dominio solicitado:

<IfModule mod_headers.c> Header set Access-Control-Allow-Origin "*" </IfModule>

Solución 2: configure los encabezados de la manera correcta

Si configura esto en el encabezado de respuesta del archivo solicitado, permitirá que todos accedan a los recursos:

Access-Control-Allow-Origin : *

O

Access-Control-Allow-Origin : http://www.my-domain.com

Paz y código;)


en su solicitud ajax, agregando:

dataType: "jsonp",

después de la línea:

type: ''GET'',

debería resolver este problema ...

espero que esto te ayude