pollhandler.java
来自「反向的AJAX。最大的特性是我们成为反向的Ajax。DWR1.x允许你用java」· Java 代码 · 共 445 行 · 第 1/2 页
JAVA
445 行
if (request.isRequestedSessionIdValid() && request.isRequestedSessionIdFromCookie()) { String headerSessionId = request.getRequestedSessionId(); if (headerSessionId.length() > 0) { // Normal case; if same session cookie is supplied by DWR and // in HTTP header then all is ok if (headerSessionId.equals(bodySessionId)) { return; } // Weblogic adds creation time to the end of the incoming // session cookie string (even for request.getRequestedSessionId()). // Use the raw cookie instead Cookie[] cookies = request.getCookies(); for (int i = 0; i < cookies.length; i++) { Cookie cookie = cookies[i]; if (cookie.getName().equals(sessionCookieName) && cookie.getValue().equals(bodySessionId)) { return; } } // Otherwise error log.error("A request has been denied as a potential CSRF attack."); throw new SecurityException("Session Error"); } } } /** * Create the correct type of ScriptConduit depending on the request. * @param batch The parsed request * @param response Conduits need a response to write to * @return A correctly configured conduit * @throws IOException If the response can't be interrogated */ private BaseScriptConduit createScriptConduit(PollBatch batch, HttpServletResponse response) throws IOException { BaseScriptConduit conduit; if (plain) { conduit = new PlainScriptConduit(response, batch.getBatchId(), converterManager); } else { if (batch.getPartialResponse() == PartialResponse.FLUSH) { conduit = new Html4kScriptConduit(response, batch.getBatchId(), converterManager); } else { conduit = new HtmlScriptConduit(response, batch.getBatchId(), converterManager); } } return conduit; } /** * Send a script to the browser and wrap it in the required prefixes etc. * @param response The http response to write to * @param script The script to write * @throws IOException if writing fails. */ protected void sendErrorScript(HttpServletResponse response, String script) throws IOException { PrintWriter out = response.getWriter(); if (plain) { response.setContentType(MimeConstants.MIME_PLAIN); } else { response.setContentType(MimeConstants.MIME_HTML); } out.println(ProtocolConstants.SCRIPT_START_MARKER); out.println(script); out.println(ProtocolConstants.SCRIPT_END_MARKER); } /** * Accessor for the DefaultCreatorManager that we configure * @param converterManager The new DefaultConverterManager */ public void setConverterManager(ConverterManager converterManager) { this.converterManager = converterManager; } /** * Accessor for the server load monitor * @param serverLoadMonitor the new server load monitor */ public void setServerLoadMonitor(ServerLoadMonitor serverLoadMonitor) { this.serverLoadMonitor = serverLoadMonitor; } /** * Accessor for the PageNormalizer. * @param pageNormalizer The new PageNormalizer */ public void setPageNormalizer(PageNormalizer pageNormalizer) { this.pageNormalizer = pageNormalizer; } /** * @param scriptSessionManager the scriptSessionManager to set */ public void setScriptSessionManager(ScriptSessionManager scriptSessionManager) { this.scriptSessionManager = scriptSessionManager; } /** * Alter the session cookie name from the default JSESSIONID. * @param sessionCookieName the sessionCookieName to set */ public void setSessionCookieName(String sessionCookieName) { this.sessionCookieName = sessionCookieName; } /** * Use {@link #setActiveReverseAjaxEnabled(boolean)} * @param pollAndCometEnabled Are we doing full reverse ajax * @deprecated Use {@link #setActiveReverseAjaxEnabled(boolean)} */ public void setPollAndCometEnabled(boolean pollAndCometEnabled) { this.activeReverseAjaxEnabled = pollAndCometEnabled; } /** * Are we doing full reverse ajax * @param activeReverseAjaxEnabled Are we doing full reverse ajax */ public void setActiveReverseAjaxEnabled(boolean activeReverseAjaxEnabled) { this.activeReverseAjaxEnabled = activeReverseAjaxEnabled; } /** * @param allowGetForSafariButMakeForgeryEasier Do we reduce security to help Safari */ public void setAllowGetForSafariButMakeForgeryEasier(boolean allowGetForSafariButMakeForgeryEasier) { this.allowGetForSafariButMakeForgeryEasier = allowGetForSafariButMakeForgeryEasier; } /** * Sometimes with proxies, you need to close the stream all the time to * make the flush work. A value of -1 indicated that we do not do early * closing after writes. * @param maxWaitAfterWrite the maxWaitAfterWrite to set */ public void setMaxWaitAfterWrite(int maxWaitAfterWrite) { this.maxWaitAfterWrite = maxWaitAfterWrite; } /** * The session cookie name */ protected String sessionCookieName = "JSESSIONID"; /** * Are we doing full reverse ajax */ protected boolean activeReverseAjaxEnabled = false; /** * By default we disable GET, but this hinders old Safaris */ protected boolean allowGetForSafariButMakeForgeryEasier = false; /** * Sometimes with proxies, you need to close the stream all the time to * make the flush work. A value of -1 indicated that we do not do early * closing after writes. * See also: org.directwebremoting.servlet.FileHandler.maxWaitAfterWrite */ protected int maxWaitAfterWrite = -1; /** * Are we using plain javascript or html wrapped javascript */ protected boolean plain; /** * How we turn pages into the canonical form. */ protected PageNormalizer pageNormalizer; /** * We need to tell the system that we are waiting so it can load adjust */ protected ServerLoadMonitor serverLoadMonitor = null; /** * How we convert parameters */ protected ConverterManager converterManager = null; /** * The owner of script sessions */ protected ScriptSessionManager scriptSessionManager = null; /** * The log stream */ protected static final Log log = LogFactory.getLog(PollHandler.class);}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?