Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/http/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在JSP中知道远程IP地址_Java_Http_Servlets_Http Headers_Remote Server - Fatal编程技术网

Java 如何在JSP中知道远程IP地址

Java 如何在JSP中知道远程IP地址,java,http,servlets,http-headers,remote-server,Java,Http,Servlets,Http Headers,Remote Server,我有一个web应用程序,通过它可以进行支付交易 应用程序的流程 用户将打开我的应用程序并单击“支付”按钮。现在我将请求重定向到支付网关提供商(ICICI、EBS、PayPal等)。现在,支付网关提供商页面将出现在我的网站上。现在支付过程将完成,支付网关提供商将把他们的响应发布到我的应用程序(到JSP页面)。捕获响应后,我将处理请求 我的要求 当他们调用我的JSP时,我如何知道ICICI、PayPal或EBS服务器ip地址。如果我调用request.getRemoteAddr(),它将给出客户端I

我有一个web应用程序,通过它可以进行支付交易

应用程序的流程

用户将打开我的应用程序并单击“支付”按钮。现在我将请求重定向到支付网关提供商(ICICI、EBS、PayPal等)。现在,支付网关提供商页面将出现在我的网站上。现在支付过程将完成,支付网关提供商将把他们的响应发布到我的应用程序(到JSP页面)。捕获响应后,我将处理请求

我的要求

当他们调用我的JSP时,我如何知道ICICI、PayPal或EBS服务器ip地址。如果我调用
request.getRemoteAddr()
,它将给出客户端IP地址。我想知道支付网关服务器的IP地址


提供商将数据发布为GET而不是POST。这里我没有提到我的acutal支付网关提供商

通常,只有在以下情况下,您才能在没有支付提供商帮助的情况下了解这一点:

  • 您和提供商之间没有代理,并且
  • 提供者直接向您发送HTTP POST(或类似内容)
在这种情况下,
ServletRequest.getRemoteAddr()
应该提供提供程序的地址

如果取而代之的是客户端浏览器的地址,那么提供者可能不会直接向您发送帖子,而是指示客户端浏览器发送帖子(最有可能使用Javascript)。在这种情况下,您无法找到提供商的发送地址


无论如何,您为什么需要知道支付提供商的IP地址?你自己重定向到提供者,所以你已经有了地址,不是吗


也许您可以更详细地解释一下您、客户端浏览器和支付提供商之间的数据流,以及为什么您想知道提供商的IP地址?也许我们可以提供更好的帮助。

一般来说,只有在以下情况下,您才能在没有支付提供商帮助的情况下了解这一点:

  • 您和提供商之间没有代理,并且
  • 提供者直接向您发送HTTP POST(或类似内容)
在这种情况下,
ServletRequest.getRemoteAddr()
应该提供提供程序的地址

如果取而代之的是客户端浏览器的地址,那么提供者可能不会直接向您发送帖子,而是指示客户端浏览器发送帖子(最有可能使用Javascript)。在这种情况下,您无法找到提供商的发送地址


无论如何,您为什么需要知道支付提供商的IP地址?你自己重定向到提供者,所以你已经有了地址,不是吗


也许您可以更详细地解释一下您、客户端浏览器和支付提供商之间的数据流,以及为什么您想知道提供商的IP地址?也许我们可以提供更好的帮助。

对于PayPal,您可以使用IPN

即时支付通知(IPN)是PayPal的消息服务 当事务受到影响时发送通知。一旦IPN 通过集成,卖家可以自动化他们的后台,因此他们没有 等待付款以触发订单履行

使用IPN,您可以从PayPal服务器获得对IPN url的POST/get调用。这意味着客户在付款后不必返回您的网站,您也不必验证客户数据——相反,PayPal服务器会进行三方握手:他们会向您发送付款数据,您会发回支票,他们会验证您所拥有的数据是否正确。在这种情况下,服务器ip是http调用的原始ip


其他服务可能会有类似的功能。

对于PayPal,您可以使用IPN

即时支付通知(IPN)是PayPal的消息服务 当事务受到影响时发送通知。一旦IPN 通过集成,卖家可以自动化他们的后台,因此他们没有 等待付款以触发订单履行

使用IPN,您可以从PayPal服务器获得对IPN url的POST/get调用。这意味着客户在付款后不必返回您的网站,您也不必验证客户数据——相反,PayPal服务器会进行三方握手:他们会向您发送付款数据,您会发回支票,他们会验证您所拥有的数据是否正确。在这种情况下,服务器ip是http调用的原始ip


其他服务可能会有类似的功能。

提供商正在发布GET数据,最终用户可以看到这些数据。黑客是专家,可以很容易地破解应用程序,因为只有很少的参数被加密。提供商发布GET数据,最终用户可以看到。黑客是专家,可以很容易地破解应用程序,因为只有很少的参数被加密。如果提供商直接向您发送GET,那么您将看到提供商的IP。如果您看到客户端IP,GET来自浏览器(可能由提供者发起,例如使用Javascript或重定向)。提供商是如何做到这一点的?为什么需要IP地址?为了防止网站被黑客攻击,我们计划检查IP地址。在我的场景中,当他们调用请求头的“Referer”时不可用。啊,那么你想做某种安全检查吗?通过IP地址这样做通常不是一个好主意,因为它可能是伪造的。再次,请扩展您的问题,以解释您为什么需要IP地址。为了进行安全检查,我需要IP地址。再次,请澄清您的问题:发件人如何准确发送其响应。?无论如何,基于IP地址的身份验证是不安全的。使用另一种机制,最好是提供者推荐的机制(参见vlad b.的回答)