2012-12-14 107 views
0

我有一個由靜態HTML頁面和JS組成的Java應用程序。在應用程序中,我有類似REST的API,它由JS從靜態HTML中調用。在應用程序前面是一個前端代理服務器,比如Nginx或Apache。 前端服務器位於服務器S1上,servlet容器位於服務器S2上。從公共訪問保護私人內部Web API的機制

我有一個頁面http://example.com/mycontext/page.html包括JS文件調用位於http://example.com/mycontext/api/someresource 前端REST API傳遞匹配http://example.com/mycontext/到我的應用程序的所有請求。

我想只是我自己的Intranet(比如從服務器S3),而不是從互聯網其他應用程序引入其他Web API在我的內部使用的應用程序只,即這個新的API被調用可見。

我希望這個api基於HTTP,WS或類似REST,並由同一個servlet容器管理,比如Tomcat,我的應用程序部署在這個容器中。

我有什麼選擇?

+0

您沒有提及您的服務器S1所在的位置(外部/內部),以及是否需要訪問S3提供的服務。 – Perception

+0

@Perception S1可以通過互聯網訪問,可以訪問內部服務器(S2,S3),但不需要訪問S3。 – AlexanderYastrebov

+0

@AlexanderYastrebov,在兩個應該通信的服務器/ apis之間有共享的祕密。客戶端使用此祕密來計算將由目標服務驗證的MAC。請參閱[this](http://stackoverflow.com/a/12792698/1530938)。你的問題是一個可能的問題重複 – kolossus

回答

2

我的前端通過匹配http://example.com/mycontext/*我的應用程序

都要求在這種情況下,最簡單的答案是改變前端通過http://example.com/mycontext/private/*通過,然後有其他的服務器直接在http://server.internal.ip:8080/mycontext/private上訪問您的內部API。

+0

你在問什麼是我正在尋找的,我想。你可以請引導我多一點:http://stackoverflow.com/questions/43002283/how-to-allow-internal-mvc-web-api-from-external-site-outside-the-network謝謝。 – Si8