【问题标题】:making database available to other servers使数据库对其他服务器可用
【发布时间】:2011-07-14 06:02:35
【问题描述】:

好的, 我不完全清楚如何提出这个问题,所以请随时编辑它。

这就是想法。

我有一个我认为可能对网站管理员有用的数据库。 作为一项付费服务​​,我想提供一些与数据库的接口。 我希望我的数据库能够动态填充下拉选项菜单。

当数据库、请求 html/javascript 和处理 php 都在同一台服务器上时,我知道该怎么做。

如果请求的 html html/javascript 在网站管理员的服务器上,并且处理 phps 和数据库在我的服务器上,我不确定是否可以这样做。

我也不确定如何确保只有授权用户才能连接到我的数据库。

此时,我正在寻找宏观层面的解决方案,而不是代码实现。

谢谢!

【问题讨论】:

  • 为什么有人想跨域只是为了填充一个下拉框?
  • 让我们假设它是一个很棒的数据库,并且网站管理员不想费心在他自己的服务器上设置 mysql,他只想插入几行简单的 javascript 来处理这一切?
  • “让我们假设它是一个很棒的数据库”——充满了黄金?什么是伟大的数据库?我没遇到过很多?
  • 我不明白你为什么要这么做!但是您可以使用 ajax 轻松实现这一点!站长可以调用您的服务器,您可以将 html 代码插入到他们想要的任何地方!
  • 数据库是否真正有价值将在市场上进行整理,与此问题的有效性无关。在向第三方提供数据时,大多数人会公开一个 Web 服务(可以对付费服务产品进行身份验证)。

标签: php javascript database


【解决方案1】:

建议您创建一个简单的 Web 服务(例如,根据您指定的查询字符串中所述的请求从数据库中获取信息的 PHP 页面),而不是直接连接到远程数据库服务器)为您的服务器生成 XML / JSON网页。

您的网页(包含您的下拉框)可以发出 AJAX 请求来获取 XML 并解析数据。有了这种机制,就可以避免暴露数据库带来的安全问题。

【讨论】:

    【解决方案2】:

    我的方法是编写一个 Web 服务(无论是 SOAP、XMLRPC 还是 REST),它要求用户在每个请求中提交一个 API 密钥。该服务将验证密钥,与数据库对话,并以某种标准格式将结果返回给用户。 API 密钥(显然)对于每个用户/订阅都是唯一的。

    【讨论】:

      【解决方案3】:

      您可以将请求的结果以 JSONP 格式(带填充的 json)返回给 php 脚本。这允许 javascript 在原始网页上执行回调方法,即使该服务位于另一个域中。

      您可能需要某种方式来跟踪您的 php 代码中的状态以确定它们是否经过身份验证。一种方法是让第 3 方网页的作者在其正文加载期间向您的 php 脚本发送身份验证令牌。然后,您可以将客户端的 IP 地址标记为“已验证”,然后来自同一 IP 的所有其他请求将返回有效结果。来自未经身份验证的 IP 的请求可能会返回错误消息。

      IP 在我们的 NAT(网络地址转换)世界中显然不是唯一的。如果您希望它更简单,您可以在 PHP 中生成自己的令牌并将其从请求中发送回来以进行身份​​验证。第 3 方站点会将该令牌存储在内存(或 cookie)中,并在每次请求时将其发回给您。您将使用该令牌作为未来请求的身份验证证明,而不是 IP。这基本上是大多数服务器执行会话的方式,PHP 可能为此内置了一些东西。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-02-22
        • 1970-01-01
        • 2015-02-17
        • 2021-02-05
        • 1970-01-01
        • 2018-03-25
        • 2020-12-13
        • 2017-09-25
        相关资源
        最近更新 更多