简体   繁体   中英

XMLHttpRequest cannot load [archivo]. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin [dominio]

XMLHttpRequest cannot load [archivo]. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin [dominio] is therefore not allowed access.

Buenos días, este es el error que me sale al ejecutar este código:

$.ajax({
    contentType: "application/json; charset=utf-8",
    dataType : "json",
    url: urlArchivo, 
    type: "POST",
    data: { usuario: 'test'},
    crossDomain: true,
    success: function(result) {
        alert(JSON.stringify(result));
    },
    error: function(xhr,status,error) {
        alert(status);
    },
});

He tratado de resolver el problema con jsonp , pero jsonp "transforma" el metodo POST en GET, con lo que el archivo destino no me reconoce los datos que le introduzco al utilizar el método POST para recoger los datos. Por lo tanto tampoco me sirve ?callback=? dado que también "transforma" el método POST en GET.

Otra solución según he visto es poner en PHP (que es el lenguaje utilizado) en el servidor destino el código:

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

Pero no quiero tener que llamar para que cambien el archivo destino. Por lo que me preguntaba si existe una solución que siga transmitiendo los datos con método POST y sin tener que tocar el archivo en el servidor.

Añado que efectivamente, si envío los datos a través de un formulario html, recoge bien los datos y los transmite, pero no con AJAX.

Gracias. Iván Ros

除了修改远程服务器之外,您唯一的选择是在本地服务器上具有一个代理脚本,该脚本可从远程服务器获取您的数据。

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM