【问题标题】:AJAX versus CURLAJAX 与 CURL
【发布时间】:2011-06-14 02:52:07
【问题描述】:

在了解请求的来源时,我需要知道 CURL(在 PHP 中)和 AJAX(在 Javascript 中)之间的区别。

更新: 我想知道的是,如果我使用 AJAX 生成请求,服务器端会收到哪个发件人 IP 地址,并将数据包作为源? CURL 也是如此,对于所有用户,它将发送单个 IP 地址。但是 JS 也是这样吗? JS在客户端执行所以它会是客户端IP地址吗?

【问题讨论】:

标签: ajax curl


【解决方案1】:

cURL 是一个服务器端进程。这意味着它会在页面渲染之前被调用,与客户端的能力无关。

然而,AJAX 是一个客户端调用。这意味着它不会被执行直到客户端加载页面(或至少看到并执行那段代码,但这通常适用于 document.ready)。

如果您希望检索信息并立即将其转储给用户,那么 cURL 是您的最佳选择。如果您想进行渐进式加载(转储页面,然后检索内容以“无缝”加载给用户),那么 AJAX 是最好的选择。请记住,尽管在当今时代它是微不足道的,但在 FireFox 的 NoScript 扩展的情况下,AJAX 可能会被禁用。

话虽如此,cURL 的执行源将在服务器上。 AJAX 请求的来源将基于每个客户端。两者都没有提供安全的检测方法(服务器端)来了解谁发送了什么(因为可以更改标头)。

【讨论】:

    【解决方案2】:

    如果您尝试检测哪个方法被用作请求的来源,则无法确定。大多数浏览器在通过 AJAX 发送请求时使用 HTTP 标头 X-Requested-With。默认情况下,cURL 库确实发送了一个用户代理,但这显然可以由库更改。这两种方法都容易伪造,不宜用于严格验证。

    编辑:

    AJAX 请求将来自发出 AJAX 请求的客户端。 cURL 请求将来自使用库的位置。 (例如,如果您使用 PHP,它将来自 PHP 服务器。如果您通过 CLI 使用它,那么它将来自您执行命令的服务器)

    显然请求可能在代理等之后。

    【讨论】:

      【解决方案3】:

      从服务器请求 javascript 文件的 IP 地址将与从该文件向服务器发送 ajax 请求的 IP 地址相同。请参阅same origin policy

      【讨论】:

      • 据此,如果我创建一个网页,该网页将触发 AJAX 请求以说出一些 www.nnn.com,那么任何使用我的网页的用户都会从他/她的 IP 触发此请求。对吗?
      • 是的,这就是我和布拉德所说的。注意:AJAX 受到同源策略的限制:您不能向与请求来源不同的域发出 AJAX 请求。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-12-12
      • 2012-10-26
      • 2011-03-07
      • 1970-01-01
      • 2010-11-01
      相关资源
      最近更新 更多