【问题标题】:Failed to query HTTP URL via AJAX通过 AJAX 查询 HTTP URL 失败
【发布时间】:2018-01-30 16:35:33
【问题描述】:

当我尝试通过 AJAX 从另一个域查询 HTTP URL 时,我收到标题中提到的错误,我总是收到 错误回调

DOMException: 无法在“XMLHttpRequest”上执行“发送”:无法加载 {URL}。

但我可以通过浏览器获取 URL "HERE"

$.ajax({
    url: "http://113.196.140.146/v2.3/session?vendor_id=III-DM&token=LS0tLS1CRUdJTiBQR1AgTUVTU0FHRS0tLS0tDQpWZXJzaW9uOiBPcGVuUEdQLmpzIHYxLjMuMA0KQ29tbWVudDogaHR0cDovL29wZW5wZ3Bqcy5vcmcNCg0Kd2NGTkEvRDl6dFVMRG1INUVBZjlFYVRDRWR2ZWxQTEN3TkZXZnNacU5FQ043WWZUc1ErQVNoWkl4a25uCmpzMlljQzFiaHVjVzk1VzdRaXdXczBCdGplV3BIVkQrTk9lZ20wamcrN1ZQS0J0NFBiKy9MRi9qTTVPUgoxcVJZckFVaFZxa2c4ZEVla2xPUHdRMDcweGxFWEZZWG1IMmN4NWRrTU5aakY0U3Q4dFYvbFhpMFlOY0oKeFRodFdkRTFuNjBRZnZjZ1J5QXZXQTY1ZFJ0aVlSMEhKYk9pY1hkMitVd3MvTmJBd1NmSmMvMVVPVVNjCmpsbmUxb3V0YzFoSkpwVkVqWFgvbXBoMzY5Sjg3eVJzdjdtRlVrZm9xQU0wUVZHUnVSc0I4aStpaTRGMwowM2JDYzN5NUlnRWsvK0xhVUVCcUdZU3FKb2tQaVcvdFBhTlBxeThoZGFMdkxoRHFIUFFDdjJtYVUySnEKbUFmNG5xckFtVUdkVU9SUlcwcy92NHhCZ0ZNR3Bsd3NWMGNTOEljVEVwOTBHSG1GRWxKRktMTERWRnZGClpkNnltWTBBSWlOK2lpWEY2b0pxR3dmdGlsN3lMcmN3dEhhMDFyK2JOL004dXNQdjhJUGtpdzlNeVY5cApnMUpoUGpYRmJDaDFIZ3lUNVdrTEpjbm8xSDhvd0Y3NVl1K0lDYzBRUUFlcVNVbWgrR0JnS2ZvbDhTWnQKMHpQTGFXWDIwYVFzcDVHRmJuMENxN1pxSWk0aHZBQXJTclE0WFVCdFNwdEVXOFd3Vi9CQzlvZWRNNWsrCjVoZ0NwTXFGOTFwZnNYSVNNUWhFbWg2L2hkeExEeHJNRUYzWXBHRnFINnZ0Mlg5ZUJqSngwalpFdDJ3Ygpqbi9Vb2plZzBucGFFaWc4SVY0UTk3eTBJelBpYXpaeGIzdkJXUk9neGJIbDBsTUJGWkg1YjNZa015T0cKTlZydU9kemdYNURnUk5LZlQxbFdPR3BkZE1URHMvbDd6Q0pJMURCMk9vZFpzQ3lLemw5NUM1YWZ1S284CjlUVk5lVzY1TW8yaEo0bFZOOC9LMTM5aUphc090ejI5OWlzS0NnPT0NCj1CY0ZCDQotLS0tLUVORCBQR1AgTUVTU0FHRS0tLS0tDQo=&timestamp=1517210918&signature=VpYOWBp0EwEMkuBcJ8Un7Y7dx08=",
    type: "GET",
    dataType: "json",
    crossDomain: true,
    async: false,
    success: function(resp, status, xhr) {
        console.log(resp);
    },
    error: function(xhr, status, error){
        console.log(error);
    }
});

如何通过 AJAX 获得成功回调

【问题讨论】:

  • 错误是什么?
  • DOMException:无法在“XMLHttpRequest”上执行“发送”:加载失败。我已经更新了。
  • 您是从 113.196.140.146 还是其他域请求 ajax?
  • @ewwink 我从另一个域请求 ajax

标签: javascript jquery ajax cross-domain


【解决方案1】:

远程服务器两次返回Access-Control-Allow-Origin标头,ajax进程已经失败。

根据官方CORSdocumentation

如果响应包含零个或多个 Access-Control-Allow-Origin 标头值,返回失败并终止 这个算法。

文章描述了您遇到的错误。我附上了从服务器(113.196.140.146)返回的响应头的图像。可以看到Access-Control-Allow-Origin的重复头。

【讨论】:

    猜你喜欢
    • 2014-12-28
    • 1970-01-01
    • 2013-04-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多