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 + -
显示快捷键?