Web是外部和客户端的应用程序,如何通过ajax调用到达内部的应用服务器



我们有这样的架构:

Web服务器:部署Web应用程序(html、javascript、css)

应用服务器:WebApi已部署

问题是,我无法发出ajax请求来访问应用程序服务器,因为它位于防火墙后面。

Web应用程序应该向互联网用户公开使用。

我们应该做些什么改变才能让它发挥作用?

我们应该将Web应用程序转移到应用程序服务器吗?但这怎么会在互联网上被访问呢。

提前感谢您的建议。

您将不得不在防火墙中为web服务器的地址设置一个异常。。。通过这种方式,你的网络服务器可以访问API,但没有其他东西可以访问(好吧,不是完全没有其他东西-网络服务器上的其他东西可以,但可以通过将你的网络应用程序托管在它自己的/专用的网络服务器上轻松解决)。

如果您的Web应用程序直接调用Web API端点(例如,使用客户端javascript框架(如AngularJS)的单页应用程序和/或使用对应用程序服务器地址的AJAX调用),如果您不允许对应用程序服务器进行公共访问,则您的客户端将无法访问您的API。

这是因为您的客户端位于用户的web浏览器中。

您必须允许通过防火墙中的internet连接到应用程序服务器。

好吧,这一切都取决于你如何看待事物,以及你的应用程序应该如何分布(比如负载、安全性等标准)。一般来说,Web API可能只是多了一个客户端(从应用程序服务器的角度来看)。

另一方面,在健壮/分布式系统中,Web API只能作为移动/ajax客户端发送请求的端点(控制器、映射器等),然后Web API与应用程序服务器(业务逻辑所在的位置)通信。

让Web API直接与数据库通信不是一个好主意,因为当您将客户端添加到应用程序服务器(mvc、Web API、服务等)时,您就有了与客户端一样多的数据库访问点。所以,这是一个代码维护问题,另外还有一个视图层意识到DB的问题。

理想情况下,您需要将应用程序服务器作为您所有业务逻辑所在的层,并且它是您所有客户的目标(mvc web应用程序、web api、桌面、服务等),并且应该与您的DAL进行通信。此外,您还可以在应用程序服务器上设置防火墙规则,以允许来自可信来源(其他服务器)的传入流量,而不是来自整个互联网(ajax)。

相关内容

  • 没有找到相关文章

最新更新