更改 jQuery 请求期间使用的 IP


changing the IP used during a jquery request

我正在研究支付集成,遗憾的是我没有静态IP,我的国家被禁止了。

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

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

代码是这样的:

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

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

如果 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);
        }
    }
 }

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

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

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

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

通常,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"
})