0

发出跨域 ajax 请求时出现此错误。

错误:NetworkError:DOM 异常 19

请对此提供帮助。卡住真的很糟糕:(

4

5 回答 5

2

在 Chrome 中使用同步请求时出现此错误:

var req = new XMLHttpRequest();
req.open("GET", url, false) // false denotes synchronous call
req.send();

异步进行(无论如何我都想这样做)并没有给我错误。

然后我发现服务器重写了 URL。如果我使用重写的 URL,我没有收到错误。可能是一个 Chrome 错误,因为 Safari 可以很好地处理同步的、非重写的情况。

不知道我是否会报告它,因为无论如何同步 XMLHttpRequests 已被弃用。

于 2015-07-13T22:20:51.107 回答
1

一个常见的错误是在需要 http 连接的服务器上发送 https 请求。

于 2013-08-03T20:51:29.130 回答
1

为了让跨域 AJAX 调用正常工作,我在服务器上使用了 PHP ...

getRemoteUrl.php

<?php
if (preg_match("/^[();[]{}]+$/", $_GET['url'])) {
  //Something bad
} else {
  $ctx = stream_context_create(array('http' => array('timeout' => 10)));

  if (!(@$contents = file_get_contents($_GET['url'], 0, $ctx))) {
    //fail
  } else {
    //success
    echo $contents;
  }
}
?>

然后调用 PHP 文件并使用输出,就像直接调用网站一样。

function GetXmlHttpObject() {
  if (window.XMLHttpRequest) {
  // code for IE7+, Firefox, Chrome, Opera, Safari
    return new XMLHttpRequest();
  } else if (window.ActiveXObject) {
  // code for IE6, IE5
    return new ActiveXObject("Microsoft.XMLHTTP");
  } else {
   return null;
  }
}

var xmlhttp = GetXmlHttpObject();
if (xmlhttp === null) {
  //Your browser does not support XMLHTTP!
} else {
  xmlhttp.open("GET", "getRemoteUrl.php" + "?url=someRemoteUrl", false);
  xmlhttp.send();
  var webpage = xmlhttp.responseText;
  //do something with webpage
}

我建议改用异步;为简洁起见,我使用了同步。如果 PHP 不是首选或不可用,这可以使用其他服务器端语言来完成。

于 2013-10-10T00:20:04.070 回答
0

DOM Exception 19 是指“网络错误”。您在 Ajax 调用中联系的 URL 是否可用?

如果服务器支持,跨域请求是可能的!在进行实际的 GET/POST 调用之前,浏览器会向服务器发出一个 OPTIONS 调用,以检查它是否支持跨域请求。检查您正在联系的服务器是否支持跨域请求。有关跨域请求的更多详细信息,请参阅这篇非常有帮助的文章:使用 CORS

于 2013-08-01T10:42:05.317 回答
0

为了避免服务器的跨域策略,您可以使用Korz,只需添加

<script src="//tomodo-tools.s3.amazonaws.com/tomodo.korz-0.5.js"></script>

到您<head>和所有跨域请求将通过 tomodo.me 路由因此它们Access-Control-Allow-Origin header是“*”。

于 2013-11-25T15:45:58.463 回答