Solicitud de origen cruzado de Ajax bloqueada: la misma política de origen no permite leer el recurso remoto

Estoy escribiendo un sitio simple que toma como entrada una expresión idiomática, y devuelvo su significado (s) y ejemplos del diccionario de Oxford. Aquí está mi idea:

Envío una solicitud a la siguiente URL:

http://www.oxfordlearnersdictionaries.com/search/english/direct/?q=[idiom] 

Por ejemplo, si el modismo es “no llegar lejos”, enviaré una solicitud a:

 http://www.oxfordlearnersdictionaries.com/search/english/direct/?q=not+go+far 

Y seré redirigido a la siguiente página:

 http://www.oxfordlearnersdictionaries.com/definition/english/far_1#far_1__192 

En esta página, puedo extraer el significado (s) y el (los) ejemplo (s) del modismo. Aquí está mi código para probar. Alertará la url de respuesta:

  
$(document).ready(function(){ $("#submit").bind('click',function(){ var idiom=$("#idiom").val(); $.ajax({ type: "GET", url: 'http://www.oxfordlearnersdictionaries.com/search/english/direct/', data:{q:idiom}, async:true, crossDomain:true, success: function(data, status, xhr) { alert(xhr.getResponseHeader('Location')); } }); }); });

El problema es que tengo un error:

Petición cruzada de origen bloqueada: la misma política de origen no permite leer el recurso remoto en http://www.oxfordlearnersdictionaries.com/search/english/direct/?q=by+far . Esto se puede solucionar moviendo el recurso al mismo dominio o habilitando CORS.

¿Alguien puede decirme cómo resolver esto por favor? Otro enfoque también está bien

¿Su sitio web también está en el dominio oxfordlearnersdictionaries.com? ¿o intenta hacer una llamada a un dominio y la misma política de origen lo está bloqueando?

A menos que tenga permiso para configurar el encabezado a través de CORS en el dominio oxfordlearnersdictionaries.com, es posible que desee buscar otro enfoque.

JSONP o “JSON con relleno” es una técnica de comunicación utilizada en los progtwigs de JavaScript que se ejecutan en los navegadores web para solicitar datos de un servidor en un dominio diferente, algo prohibido por los navegadores web típicos debido a la política de origen mismo. JSONP aprovecha el hecho de que los navegadores no aplican la misma política de origen en las tags de script. Tenga en cuenta que para que JSONP funcione, un servidor debe saber cómo responder con los resultados formateados en JSONP. JSONP no funciona con los resultados con formato JSON.

http://en.wikipedia.org/wiki/JSONP

Buena respuesta en stackoverflow: dominio cruzado jQuery AJAX

  $.ajax({ type: "GET", url: 'http://www.oxfordlearnersdictionaries.com/search/english/direct/', data:{q:idiom}, async:true, dataType : 'jsonp', //you may use jsonp for cross origin request crossDomain:true, success: function(data, status, xhr) { alert(xhr.getResponseHeader('Location')); } }); 

No podemos obtener los datos del sitio web de terceros sin jsonp.

Puede usar la función php para buscar datos como file_get_contents () o CURL, etc.

Luego puede usar la URL de PHP con su código ajax.

  

Crea un archivo PHP = get_data.php

  

Coloque debajo de la línea en la parte superior del archivo que está llamando a través de AJAX.

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

Agregue el siguiente código a su .htaccess

Conjunto de encabezado Access-Control-Allow-Origin *

Esto funciona para mi.

Gracias