我有一個應用程序發送請求到Web服務。不幸的是,應用程序被編譯,並且到web服務的鏈接作爲http嵌入到應用程序中。 (是的,我知道這是多麼愚蠢,我沒有寫它)有沒有辦法強制應用程序發佈使用https而不是http
最近,第三方公司不再允許http請求,一切都必須是https。
該應用程序在Tomcat上作爲webapp運行。該服務器是一個Windows服務器。
有沒有辦法攔截對這個Web服務的調用並強制它使用https?
我有一個應用程序發送請求到Web服務。不幸的是,應用程序被編譯,並且到web服務的鏈接作爲http嵌入到應用程序中。 (是的,我知道這是多麼愚蠢,我沒有寫它)有沒有辦法強制應用程序發佈使用https而不是http
最近,第三方公司不再允許http請求,一切都必須是https。
該應用程序在Tomcat上作爲webapp運行。該服務器是一個Windows服務器。
有沒有辦法攔截對這個Web服務的調用並強制它使用https?
您可以使用代理腳本。用你想要的任何服務器端語言編寫,例如PHP,將API URL設置爲這個腳本,腳本爲你做https請求並將結果傳回給你的應用程序。
你也可以使用Apache本身作爲代理,並使用類似:Apache config: how to proxypass http requests to https
正如你不能改變應用程序的源代碼(因爲它是編譯),並且不能更改Web服務(因爲它是第三方),解決此問題的唯一方法是使成爲應用程序和Web服務之間的代理。要做到這一點,你需要(假定代理在本地主機上運行):
/etc/hosts
)以覆蓋DNS。例如,如果應用程序中的HTTP請求是GET http://example.com/api/sample
,則/etc/hosts
,example.com
需要映射到127.0.0.1
。example.com
時,它將請求發送到代理服務器。example.com
的真實IP地址。請注意:在此HTTPS請求中,應添加標頭host
,其值爲example.com
。第三方網絡服務可能會檢查此標題。example.com
返回實際響應後,代理將把它返回給應用程序。當然,你也可以使用逆向工程(Java反編譯)獲取應用程序的「源代碼」,更改Web服務URL,然後重新編譯爲一個Web應用程序。但是,由於應用程序可能需要更新/升級,並且可能不受您的控制,因此不建議使用這種逆向工程方法。