服務 A 使用AsyncProxyServlet將請求轉發到服務 2,但是服務 A 在請求中設定的屬性在到達服務 B 后在請求中不可用。servlet 請求屬性在 HTTP 呼叫中是否不持久?有人可以幫我理解發生了什么嗎?
public class ForwardServlet extends AsyncProxyServlet
{
//Service A
...
@Override
protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
{
...
request.setAttribute("FOO", "BAR"); // This attribute is missing in Service B
super.service(request, response);// Send to service B
}
}
uj5u.com熱心網友回復:
Servlet 請求屬性是 Servlet 規范的一部分,是一種在同一個 Servlet 容器內跨單個調度鏈保持值的方法。
這些值不作為任何 HTTP 協議規范的一部分存在,并且不能通過新的 HTTP 請求發送。
servlet 術語中的調度意味著...
- 傳入的 HTTP 請求已被決議
HttpServletRequest已創建物件- 到目的地的呼叫鏈
Servlet由Filter和Servleturl-patterns - 調度發生
Filter在鏈中的第一個 - 每個過濾器和最終目標 servlet 都可以添加/更改請求屬性
- 每個過濾器或 servlet 還可以在同一個 Servlet 容器上獲得一個
RequestDispatcherto.forward(req, resp)或.include(req, resp)相同的分派到一個新位置。
如果您的服務 B 在同一個 Servlet 容器上,請使用RequestDispatcher,并且您的請求屬性將隨之而來。
如果您的服務 B 在不同的服務器上,那么您需要弄清楚如何使用 HTTP 協議(??可能作為請求標頭?)或在您的請求正文內容(作為 JSON 值? )
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/463601.html
上一篇:如何使用AuthorizedAttribute向API控制器發出HTTP請求?
下一篇:dart_TypeError中的資料模型失敗(型別'_InternalLinkedHashMap<String,dynamic>'不是型別'String?
