【问题标题】:changing the IP used during a jquery request更改 jquery 请求期间使用的 IP
【发布时间】:2016-02-25 15:22:38
【问题描述】:

我正在开发支付集成,遗憾的是我没有静态 IP,而且我的国家/地区被禁止。

在我的个人主机上工作,并且该 IP 已被列入白名单,但似乎对其服务器的初始请求失败。

可能运行的 ajax 请求使用的是我的 IP 地址而不是服务器地址?

代码是这样的:

return jQuery.ajax({
    type: "POST",
    url: serviceUrlCard,
    data: JSON.stringify(x),
    contentType: "application/json",
    dataType: "json"
})

是否有可能发送服务器的“IP”而不是我的?

【问题讨论】:

  • 你能在失败时转储你得到的错误吗?
  • 我没有收到任何错误。查看 chrome 控制台,对他们的服务器的请求只是因为连接超时而失败。该请求使用代理可以正常工作,但这会减慢我的开发速度:(
  • 您可以像url : myProxyCharger.php 一样向您的服务器发出ajax 请求,然后在您的myCharger.php 中执行您的收费请求。
  • 这里可以复制ajax请求的cURL吗?
  • 如果您直接点击第 3 方 url,则从客户端发出请求不会使用服务器 ip。

标签: javascript php jquery ajax wordpress


【解决方案1】:

如果 AJAX 请求直接向支付服务发送数据,则使用的是您本地计算机的 IP 地址。您需要先通过接受 AJAX 请求的视图将数据发送到您的服务器。

jQuery.ajax({
    type: "POST",
    url: "/charge", // You need a view to handle this on your server
    data: JSON.stringify(x),
    contentType: "application/json",
    dataType: "json"
}

然后定义一个视图来接受数据,并希望您正在集成的支付服务具有您的语言的绑定,或者您至少可以使用 cURL 绑定与其 API 进行交互。

function charge ( request ) {
    if ( $request->is_ajax() ) {
        response = payment->api->charge(request->data);
        if ( response ) {
            return json(response);
        }
    }
 }

【讨论】:

    【解决方案2】:

    您可以改为向您的服务器发送 AJAX 请求,然后将信息从您的服务器发送到那里的服务器...

    您的服务器中的某些文件将具有

    jQuery.ajax({
        type: "POST",
        url: serviceUrlCard,
        data: JSON.stringify(x),
        contentType: "application/json",
        dataType: "json"    
    }
    

    在同一个文件中接受数据作为 post/get,并对这个文件进行 ajax 调用.. 我知道这不是最佳的做法,但不能另当别论..

    【讨论】:

      【解决方案3】:

      通常,Ajax 请求应该返回到您的服务器,然后从您的服务器发送到外部服务。

      如果这不是一个选项,并且您只需要一个位于白名单国家(即美国)的固定 IP,那么您可以以每月约 2 美元的价格租用代理服务器。

      然后,您可以通过使用诸如 https://www.ajaxproxy.com/ 之类的库来修改您的 Ajax 以使用此代理服务器 - 并按如下方式修改您的代码:

      ajaxProxy.proxy.url = "http://your proxy";
      ajaxProxy.proxy.credentials.username = "proxy username";
      ajaxProxy.proxy.credentials.password = "proxy password";
      return jQuery.ajax({
          type: "POST",
          url: serviceUrlCard,
          data: JSON.stringify(x),
          headers: ajaxProxy.proxyHeaders(),
          contentType: "application/json",
          dataType: "json"
      })
      

      【讨论】:

        猜你喜欢
        • 2013-11-08
        • 1970-01-01
        • 2018-07-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-04-10
        • 2023-03-03
        • 1970-01-01
        相关资源
        最近更新 更多