Javascript 否';访问控制允许原点';向本地主机上的Neo4j数据库发出AJAX请求时出错

Javascript 否';访问控制允许原点';向本地主机上的Neo4j数据库发出AJAX请求时出错,javascript,ajax,neo4j,Javascript,Ajax,Neo4j,我正在编写一个普通的JavaScrypt AJAX请求,从运行在localhost:8888上的MAMP服务器连接到运行在localhost:7474上的Neo4j数据库 我得到这个错误: 无法加载XMLHttpRequest . 不 “Access Control Allow Origin”标头出现在请求的服务器上 资源。因此,不允许使用源“” 通道响应的HTTP状态代码为401 在回答了类似的问题之后,我尝试删除了请求头,例如 // httpRequest.setRequestHeader(

我正在编写一个普通的JavaScrypt AJAX请求,从运行在
localhost:8888
上的MAMP服务器连接到运行在
localhost:7474
上的Neo4j数据库

我得到这个错误:

无法加载XMLHttpRequest . 不 “Access Control Allow Origin”标头出现在请求的服务器上 资源。因此,不允许使用源“” 通道响应的HTTP状态代码为401

在回答了类似的问题之后,我尝试删除了请求头,例如

// httpRequest.setRequestHeader("Content-type", "application/json")
。。。但这没什么区别。我还研究了CORS,但没有找到解决方案

我可以对JavaScript进行哪些更改以使其正常工作?有没有办法让我的开发机器上的Neo4j数据库服务器接受来自同一台机器的请求

我的源代码:

<button type="button">AJAX Request</button>

<script type="text/javascript">
(function() {
  var httpRequest
  var restApiUrl = "http://neo4j:1234@localhost:7474/db/data/transaction/commit"

  document.querySelector("button").onclick = function() {
    makeRequest(restApiUrl)
  }

  function makeRequest(url) {
    if (window.XMLHttpRequest) { // Mozilla, Safari, ...
      httpRequest = new XMLHttpRequest()
    } else if (window.ActiveXObject) { // IE
      try {
        httpRequest = new ActiveXObject("Msxml2.XMLHTTP")
      } 
      catch (e) {
        try {
          httpRequest = new ActiveXObject("Microsoft.XMLHTTP")
        } 
        catch (e) {}
      }
    }

    if (!httpRequest) {
      alert('Giving up :( Cannot create an XMLHTTP instance')
      return false
    }

    var parameters = JSON.stringify({
  "statements" : [ {
    "statement" : "CREATE (n {props}) RETURN n",
    "parameters" : {
      "props" : {
        "name" : "My Node"
      }
    }
  } ]
})

    httpRequest.onreadystatechange = alertContents
    httpRequest.open('POST', url, true)
    httpRequest.setRequestHeader("Content-type", "application/json")
    httpRequest.setRequestHeader("Accept", "application/json; charset=UTF-8")
    httpRequest.send(parameters)
  }

  function alertContents() {
    if (httpRequest.readyState === 4) {
      if (httpRequest.status === 200) {
        console.log(httpRequest.responseText)
      } else {
        alert('There was a problem with the request.')
      }
    }
  }
})()
</script>

您会遇到这个错误,因为端口号不同。 通常,如果服务器不支持跨域Ajax调用,则无法进行跨域Ajax调用。 尽管如此,还是有办法解决的。
您可以使用CORS或JSONP。

您会遇到这个错误,因为端口号不同。 通常,如果服务器不支持跨域Ajax调用,则无法进行跨域Ajax调用。 尽管如此,还是有办法解决的。
您可以使用CORS或JSONP。

您会遇到这个错误,因为端口号不同。 通常,如果服务器不支持跨域Ajax调用,则无法进行跨域Ajax调用。 尽管如此,还是有办法解决的。
您可以使用CORS或JSONP。

您会遇到这个错误,因为端口号不同。 通常,如果服务器不支持跨域Ajax调用,则无法进行跨域Ajax调用。 尽管如此,还是有办法解决的。 您可以使用CORS或JSONP。

您面临的问题

发生了什么事?
默认情况下,您的浏览器不允许访问来自其他域的资源(例如,通过AJAX)。这一个的存在是为了使web更加安全

工作解决方案

以下是工作解决方案(本地,在我的机器上):

值得注意的是:

  • 数据类型-此类型设置我们接受JSON作为响应
  • contentType-这一个设置我们在请求中使用JSON
我在本地使用Neo4j2.2.5。这个版本设置了“访问控制允许原点”作为响应,所以应该没有问题。您可以使用ChromeDevTools验证数据库在响应中发送的内容

例如:

注意:请参阅“响应标题”部分。

您面临的问题

发生了什么事?
默认情况下,您的浏览器不允许访问来自其他域的资源(例如,通过AJAX)。这一个的存在是为了使web更加安全

工作解决方案

以下是工作解决方案(本地,在我的机器上):

值得注意的是:

  • 数据类型-此类型设置我们接受JSON作为响应
  • contentType-这一个设置我们在请求中使用JSON
我在本地使用Neo4j2.2.5。这个版本设置了“访问控制允许原点”作为响应,所以应该没有问题。您可以使用ChromeDevTools验证数据库在响应中发送的内容

例如:

注意:请参阅“响应标题”部分。

您面临的问题

发生了什么事?
默认情况下,您的浏览器不允许访问来自其他域的资源(例如,通过AJAX)。这一个的存在是为了使web更加安全

工作解决方案

以下是工作解决方案(本地,在我的机器上):

值得注意的是:

  • 数据类型-此类型设置我们接受JSON作为响应
  • contentType-这一个设置我们在请求中使用JSON
我在本地使用Neo4j2.2.5。这个版本设置了“访问控制允许原点”作为响应,所以应该没有问题。您可以使用ChromeDevTools验证数据库在响应中发送的内容

例如:

注意:请参阅“响应标题”部分。

您面临的问题

发生了什么事?
默认情况下,您的浏览器不允许访问来自其他域的资源(例如,通过AJAX)。这一个的存在是为了使web更加安全

工作解决方案

以下是工作解决方案(本地,在我的机器上):

值得注意的是:

  • 数据类型-此类型设置我们接受JSON作为响应
  • contentType-这一个设置我们在请求中使用JSON
我在本地使用Neo4j2.2.5。这个版本设置了“访问控制允许原点”作为响应,所以应该没有问题。您可以使用ChromeDevTools验证数据库在响应中发送的内容

例如:


注意:请参阅“响应标题”部分。

如果使用jQuery,则
$.ajax()
方法会自动将JSON请求包装到JSONP中:如我问题的编辑版本所示,我尝试使用
$.ajax()
,但错误仍然存在。无论是使用
JSON.stringify()
还是发送原始对象,都没有区别。如果使用jQuery,则
$.ajax()
方法会自动将JSON请求包装到JSONP中:如我问题的编辑版本所示,我尝试使用
$.ajax()
,但错误仍然存在。无论是使用
JSON.stringify()
还是发送原始对象,都没有区别。如果使用jQuery,则
$.ajax()
方法会自动将JSON请求包装到JSONP中:如我问题的编辑版本所示,我尝试使用
$.ajax()
,但错误仍然存在。它使
function makeRequest(url) {
  var data = JSON.stringify({
    "statements" : [ {
      "statement" : "CREATE (n {props}) RETURN n",
      "parameters" : {
        "props" : {
          "name" : "My Node"
        }
      }
    } ]
  })

  $.ajax({
    url : url
  , type: "POST"
  , data : data
  , contentType: "application/json"
  , dataType: "json"
  , success: function(data, textStatus, jqXHR) {
      console.log(data, textStatus)
    }
  , error: function (jqXHR, textStatus, errorThrown) {
      console.log(jqXHR, textStatus, errorThrown)
    }
  })
}
$.ajax({
    url : "http://localhost:7474/db/data/transaction/commit",
    type: "POST",
    dataType: "json",
    contentType : 'application/json',
    data : JSON.stringify({
      "statements" : [ {
        "statement" : "CREATE (n {props}) RETURN n",
        "parameters" : {
          "props" : {
            "name" : "My Node"
          }
        }
      } ]
    }),
    success: function(data, textStatus, jqXHR) {
      console.log(data, textStatus)
    },
    error: function (jqXHR, textStatus, errorThrown) {
      console.log(jqXHR, textStatus, errorThrown)
    }
});