【问题标题】:Neo4j: connect to localhost:7474/ REST API from JavaScript in Ubuntu 16.04Neo4j:在 Ubuntu 16.04 中从 JavaScript 连接到 localhost:7474/REST API
【发布时间】:2017-02-09 06:43:46
【问题描述】:

对于一个 Chrome 扩展项目,我正在创建一个简单的 HTML + JavaScript 页面来测试 Neo4j 的 REST API。我在http://localhost:7474/ 运行了 Neo4j 社区版 3.0.6,并且可以连接到 /browser 页面。我正在 Ubuntu 16.04 上开发

当我从localhost/ 的页面连接时,出现错误:

XMLHttpRequest 无法加载 http://localhost:7474/db/data/。不 请求中存在“Access-Control-Allow-Origin”标头 资源。因此,Origin 'http://localhost' 不允许访问。 响应的 HTTP 状态代码为 401。
错误:0(…)

我了解我需要在 Ubuntu 16.04 上设置 Apache2 以允许端口 7474 包含“*”的“Access-Control-Allow-Origin”标头。

我已在/etc/apache2/apache2.conf 中添加以下行并重新启动服务器,但我仍然看到错误:

LoadModule headers_module /usr/lib/apache2/modules/mod_headers.so
Header always set Access-Control-Allow-Origin "*"

我还需要做什么?

【问题讨论】:

    标签: javascript apache ubuntu neo4j cross-domain


    【解决方案1】:

    问题似乎是您误解了如何正确启用 CORS。标头旨在设置在 Neo4J 网络服务上,以向浏览器表示当来自 localhost:80 的内容向 localhost:7474 发出请求时,允许使用响应(来自 :7474)。

    您当前的设置意味着如果 neo4j 浏览器页面(在端口 7474 上)中的任何内容向 localhost:80 发出请求,那么浏览器将允许它(因此与您所追求的相反)。

    查看这些解释了解更多详情:

    我不确定修改返回的 Neo4j 服务器标头有多容易,所以我想您要做的是代理(通过您的 Apache 服务器)到端口 7474 的流量,从而将 CORS 作为一切将转到端口 80。这对您的 chrome 扩展有什么帮助,我不确定(抱歉)

    【讨论】:

    • 所以我的问题变成了:将流量代理到端口 7474 需要哪些步骤?
    • 您应该发布一个新问题(检查 Google 尚未为您提供答案...),因为这完全改变了您当前问题的范围
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-27
    • 1970-01-01
    • 2013-04-13
    • 2020-09-02
    • 1970-01-01
    相关资源
    最近更新 更多