服务器之间使用http协议

发布于 2025-01-01 14:31:13 字数 292 浏览 0 评论 0原文

我有两台在 Intranet 中工作的服务器的配置。 第一个是 Web 服务器,它向浏览器生成 html 页面,该 html 向第二个服务器发送请求,第二个服务器根据某些 GET 参数的值生成并返回报告(也是 html)。 由于这个解决方案是不安全的(传递的参数被暴露),我考虑让html(由第一个服务器生成)将报告请求发送回第一个服务器,在那里,将进行安全检查,并且请求报告将使用服务器之间的 http 发送到报告服务器,而不是从浏览器发送到服务器。
报告的标记将返回到第一个服务器(作为字符串?),添加到响应对象并呈现在浏览器中。 这是http的常见做法吗?

I have a configuration of two servers working in intranet.
First one is a web server that produces html pages to the browser, this html sends requests to the second server, which produces and returns reports (also html) according to some GET parameter's value.
Since this solution is un-secured (the passed parameter is exposed) I thought about having the html (produced by the first server) sending the requests for report back to the first server, there, a security check will be made, and the request for report will be sent to the reports server using http between the servers, instead of from browser to server.
The report's markup will be returned to the first server (as a string?), added to the response object and presented in the browser.
Is this a common practice of http?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

韬韬不绝 2025-01-08 14:31:13

是的,这是一种常见的做法。事实上,当您的网络服务器需要从数据库中获取一些数据(未公开公开 - 例如不在网络服务器 DMZ 中)时,它的工作原理是相同的。

但是您需要能够使用动态页面生成(不是静态 html。例如,假设您的网络服务器允许 PHP 或 java)。

  • 您的页面对第二个服务器执行的操作相当于 HTTP GET(或 POST,或任何您喜欢的操作),发送您需要的任何必需参数。您可以使用 cURL 库或 fopen(http://) 等。

  • 它接收结果,检查返回代码,还可以执行可选的内容操作(例如替换某些文本或 URL)

  • 它将结果发送回用户的浏览器。

如果您不能(或不会)使用动态页面生成,您可以配置您的网络服务器将某些请求代理到第二个服务器(例如使用 Apache 的 mod_proxy)。

例如,当 URL“http://server1/reports”的请求到达服务器 1 时,Web 服务器将请求代理为“http://server2/internal/reports?param1=value1¶m2=value2&etc”。

用户将得到“http://server2/internal/reports?param1=value1¶m2=value2&etc”的结果,但永远不会看到它来自哪里(从他的角度来看,他只知道 http://server1/reports)。
您可以执行更复杂的操作,将代理与 URL 重写关联起来(这样您就可以在对 server2 的请求中使用对 server1 的请求的某些参数)。

如果还不够清楚,请随时提供更多详细信息(操作系统、网络服务器技术、网址等),以便我可以为您提供更多提示。

Yes, it's a common practice. In fact, it works the same when your webserver needs to fetch some data from a database (not publically exposed - ie not in the webserver DMZ for example).

But you need to be able to use dynamic page generation (not static html. Let's suppose your webserver allows PHP or java for example).

  • your page does the equivalent of an HTTP GET (or POST, or whatever you like) do your second server, sending any required parameter you need. You can use cURL libraries, or fopen(http://), etc.

  • it receives the result, checks the return code, can also do optionnal content manipulation (like replacing some text or URLs)

  • it sends back the result to the user's browser.

If you can't (or won't) use dynamic page generation, you can configure your webserver to proxy some requests to the second server (for example with Apache's mod_proxy).

For example, when a request comes to server 1 for URL "http://server1/reports", the webserver proxies a request to "http://server2/internal/reports?param1=value1¶m2=value2&etc".

The user will get the result of "http://server2/internal/reports?param1=value1¶m2=value2&etc", but will never see from where it comes (from his point of view, he only knows http://server1/reports).
You can do more complex manipulations associating proxying with URL rewriting (so you can use some parameters of the request to server1 on the request to server2).

If it's not clear enough, don't hesitate to give more details (o/s, webserver technology, urls, etc) so I can give you more hints.

谈场末日恋爱 2025-01-08 14:31:13

另外两个选项:

  1. 使用代理配置面向 Internet 的 HTTP 服务器(例如
    Apache 中的 mod_proxy)
  2. 保持服务器不变并添加应用程序防火墙

Two others options:

  1. Configure the Internet facing HTTP server with a proxy (e.g.
    mod_proxy in Apache)
  2. Leave the server as it is and add an Application Firewal
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文