1.如何在同一瀏覽器的下一個標籤中查找您的網站? 2.如何防止在第二個選項卡中打開網站?如何在特定會話中跟蹤特定瀏覽器的網站
回答
如果瀏覽器首先調用您的站點,您將在服務器端創建一個會話,這會導致將會話cookie發送到瀏覽器。在你的HTML中,你可以嵌入一個隱藏的表單值。這個隱藏的值必須包含在每個後續的調用中。最好是始終使用POST,以便隱藏的值不包含在URL中。
如果用戶打開第二個選項卡並希望打開您的站點的URL,則不包含隱藏參數,但第一個選項卡中的會話Cookie爲。
所以在服務器端,你知道已經有一個會話,但隱藏的值是缺失的。所以你可以發送完全不同的迴應。
更新 這裏有個小例子。
在web內容文件夾中有一個子文件夾protected
。所有包含的JSP文件只能在一個選項卡中打開。這裏只有MyJsp.jsp
。
在根文件夾中有兩個JSP:error.jsp
當有人試圖在第二個選項卡中打開受保護的JSP時顯示。和index.jsp
其中重定向到protected/MyJsp.jsp
。
還有一個映射到protected
文件夾的servlet過濾器。此過濾器將在執行此文件夾中的JSP之前調用。
protected/MyJsp.jsp
:
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<p>Hello,
<c:choose>
<c:when test="${not empty param.name}">
<c:out value="${param.name}" />.
</c:when>
<c:otherwise>
stranger.
</c:otherwise>
</c:choose>
</p>
<form method="post">
<label>Please enter your name</label>
<input id="name" name="name" type="text"/>
<input id="marker" name="marker" type="hidden"
value="<c:out value="${sessionScope.marker}"/>"/>
<button type="submit">OK</button>
</form>
</body>
</html>
這個JSP是要求一個名稱。表單通過POST提交調用相同的JSP。隱藏字段中充滿了來自會話的值。
index.jsp
:
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!--include the library-->
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<c:redirect url="protected/MyJsp.jsp"/>
的Servlet過濾器:
@WebFilter("/protected/*")
public class OneTabFilter implements Filter {
private static final String MARKER_NAME = "marker";
private static final String MARKER_VALUE = "4711*0815";
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
final HttpServletRequest req = (HttpServletRequest) request;
final HttpServletResponse rsp = (HttpServletResponse) response;
HttpSession session = req.getSession(false);
if(session == null) {
session = req.getSession(true);
// Put the marker value into session so it is usable in JSP files.
session.setAttribute(MARKER_NAME, MARKER_VALUE);
// pass the request along the filter chain
chain.doFilter(request, response);
} else {
if(MARKER_VALUE.equals(req.getParameter(MARKER_NAME))) {
// pass the request along the filter chain
chain.doFilter(request, response);
} else {
// Redirect to the error page.
// The error page itself is not affected by this filter.
rsp.sendRedirect(req.getServletContext().getContextPath() + "/error.jsp");
}
}
}
// ...
}
試一試!
,但是如果我們開始從服務器處理每個頁面,它就不會讓我們的網站變慢,但它必須進行一次兩次服務器調用,以確保它在獲取細節時有效。 –
如果您仔細閱讀,您會看到只有一個請求 –
它不會使請求數量加倍。處理每個呼叫的額外隱藏參數的性能損失最小。對於每個請求,服務器必須檢查是否存在此參數。而已。 – vanje
- 1. Qt - 如何在特定瀏覽器中打開網站
- 2. 檢測特定網站的web瀏覽器我瀏覽到
- 3. 特定網站:Firefox與IE瀏覽器的CSS特性
- 4. 排除特定網頁上的會話跟蹤
- 5. 惱人的Facebook在特定網站的瀏覽器中彈出(?)
- 6. 如何防止用戶使用特定的瀏覽器瀏覽我的網站?
- 7. 如何從Chrome擴展跟蹤瀏覽器的會話
- 8. 從特定瀏覽器的網站中禁用JS
- 9. iPhone瀏覽器保持在特定網站上的錯誤
- 10. 如何在瀏覽器中對特定網頁的
- 11. 任何工具來跟蹤網站的特定訪問者?
- 12. 如何查找特定的網站已經打開或不在瀏覽器中?
- 13. 瀏覽器特定的jquery
- 14. 瀏覽器特定的CSS
- 15. CakePHP在瀏覽器上刪除特定會話關閉
- 16. 更改特定網頁瀏覽器
- 17. Android使用特定瀏覽器啓動特定網址
- 18. 如何使用重定向跟蹤在瀏覽器中輸入的網址?
- 19. 特定文件類型如何緩存我的網站中的瀏覽器
- 20. 如何使Google Chrome瀏覽器擴展程序重定向到特定網站?
- 21. 使用瀏覽器擴展檢測打開特定網站
- 22. 哪個特定瀏覽器CSS3必要爲移動網站
- 23. 在特定會話
- 24. 出站鏈接特定網址只跟蹤
- 25. 網站對現有瀏覽器會話無響應,但確定新會話
- 26. WebDriverEventListener不會跟蹤瀏覽器事件
- 27. 如何製作與其他瀏覽器兼容的特定網站?
- 28. 如何從谷歌瀏覽器複製特定網站的HTML和CSS
- 29. 關閉瀏覽器時的跟蹤會話註銷時間
- 30. 如何搜索一個特定的網站建立在PHP的特定網站?
我不相信有辦法做到這一點。出於明顯的安全原因,瀏覽器不允許JS訪問有關其他打開標籤的信息。 – Carcigenicate
可能是不可能的,除非您以某種方式訪問到服務器的原始客戶端連接,但即使如此,HTTP連接通常也是無狀態的,並且連接立即關閉。 – xander
那麼銀行網站如何不允許複製下一個標籤中的網址。 –