相关疑难解决方法(0)

捕获并记录响应正文

我有一个servlet来处理某些HTTP请求和响应.我想在发送回客户端之前记录响应正文.有没有什么办法可以在HttpServletResponse从servlet 作为对象发送之前捕获响应主体?

java servlets

29
推荐指数
2
解决办法
5万
查看次数

捕获服务器端生成的动态内容

有什么办法可以在服务器端捕获生成的动态内容,并将相同的文件或字符串对象提供给servlet.

我们可以使用JSP生成动态内容,但是我们无法访问服务器端生成的动态内容.我们一旦转发容器生成动态内容并将其发送到响应.

我需要访问服务器端生成的动态内容.

任何帮助将不胜感激.

java jsp servlets

13
推荐指数
1
解决办法
8180
查看次数

如何将JSF页面呈现时间和响应大小插入页面本身,至少部分?

我意识到这是一个鸡和蛋的问题,并且不可能准确地解决呈现页面所花费的时间(或响应的大小)并将该数字插入页面本身而不影响任何一个度量.不过,我正在寻找一种方法来将一个数字部分插入JSF/Facelets/Seam应用程序的页面中.

例如,在某个地方的.jsf页面的底部:

<!-- page size: 10.3Kb -->
<!-- render time: 0.2s -->
Run Code Online (Sandbox Code Playgroud)

我遇到过JSFUnit的JSFTimer,非常方便.但是,相位侦听器方法不允许将RENDER_RESPONSE阶段的结果插入到页面中.不知道如何访问目前为止编码的响应的大小.

在RENDER_RESPONSE结束时或之后是否有一种快速而肮脏的方式来连接某种后处理事件,并将这两个数字注入到即将呈现的页面中?接近这个的一种方法可能是通过servlet过滤器,但我正在寻找更简单的东西; 也许是Seam或Facelets的一招

谢谢,
-A

jsf servlets httpresponse

13
推荐指数
1
解决办法
5926
查看次数

如何在调用HttpServletResponse.encodeURL()时将Tomcat配置为不将会话ID编码到URL中

看起来像一个愚蠢的问题,答案是"不要使用encodeURL()!" 但是我正在使用在JSP中使用netui锚标签的代码库,我需要禁用将JSESSIONID写入URL,因为这是一个安全风险.

在WebLogic中,您可以通过在weblogic.xml中配置url-rewriting-enabled来配置它(我知道,因为我在WebLogic服务器中编写了该功能!).但是,我找不到Tomcat的等效配置选项.

java session tomcat url-rewriting

8
推荐指数
2
解决办法
7124
查看次数

如何根据Content-type添加响应头; 在提交响应之前获取Content-type

我想Expires为所有image/*和设置标题text/css.我正在这样做Filter.然而:

  • 在调用chain.doFilter(..)Content-type 之前还没有"实现"
  • 调用chain.doFilter(..)Content-type 后,内容长度也是如此,禁止添加新标题(至少在Tomcat实现中)

我可以使用所请求资源的扩展,但由于某些css文件是由richfaces通过从jar文件中获取而生成的,因此文件的名称不是x.css,但是/xx/yy/zz.xcss/DATB/....

那么,有没有办法在提交响应之前获取Content-type.

java tomcat servlets

8
推荐指数
1
解决办法
4697
查看次数

jquery跨域认证

我将Jetty服务器配置为允许跨域http请求(allowedOrigins =*),并使用其CrossOriginFilter允许跨域身份验证(allowCredentials = true).没有身份验证要求的跨域http请求正常工作.现在谈到需要身份验证的http调用时,使用JQuery无法解决问题.我使用以下代码并遵循此示例:http://www.aswinanand.com/2009/01/http-basic-authentication-using-ajax/

function login(username, password) {
$.ajax({
    type: "GET",
    contentType: "application/json",
    dataType: "json",
    url: url,
    beforeSend: function(xhr) {
        var base64 = Base64.encode(username + ":" + password);
        xhr.setRequestHeader("Authorization", "Basic " + base64);
        xhr.withCredentials = true;
    },
    error: function(data){
        alert("error");
    },
    success: function(data){
        alert("success"); 
    }
});
Run Code Online (Sandbox Code Playgroud)

在HTTPFox中,我看到以下对服务器的请求:

OPTIONS /login HTTP/1.1
...
Access-Control-Request-Method   GET
Access-Control-Request-Headers  authorization,content-type
Run Code Online (Sandbox Code Playgroud)

服务器以a响应

HTTP/1.1 204 No Content
...
Allow   OPTIONS,GET,HEAD
Run Code Online (Sandbox Code Playgroud)

我也使用下面的选项,这没有什么区别.

$.ajax({
    ...
    username: username,
    password: password,
    ...
}
Run Code Online (Sandbox Code Playgroud)

错误功能始终触发.有谁知道问题可能是什么?

authentication jquery http jetty cross-domain

8
推荐指数
1
解决办法
5693
查看次数

从 doFilter 方法设置 cookie

我有一个带有 doFilter 方法的过滤器类。在doFilter方法中,我设置了一个cookie如下

HttpServletResponse httpResp=(HttpServletResponse)servletResponse;
Cookie myCookie=new Cookie("test","");
myCookie.setValue("testValue");
myCookie.setPath("/");
myCookie.setDomain(".mydomain.com");
httpResp.addCookie(myCookie);
filterChain.doFilter(servletRequest,servletResponse); 
Run Code Online (Sandbox Code Playgroud)

这应该理想地工作吗?在 httpResp(HttpServletResponse) 对象中设置 cookie,然后只转发 servletResponse(ServletResponse) 对象

奇怪的是,cookie 是为一些客户端设置的,但对于其他一些客户端,cookie 没有设置。我检查了客户端浏览器上的 cookie 设置,看起来没问题。

java cookies servlet-filters

7
推荐指数
1
解决办法
9577
查看次数

MD5签署HttpServletResponse

我正在寻找一种方法来检查a的内容,HttpServletResponse用MD5哈希对它们进行签名.

伪代码可能看起来像这样

process(Response response, Request request){

defaultProcessingFor(response,request);

dispatcher.handle(response,request);

// Here I want to read the contents of the Response object (now filled with data) to create a MD5 hash with them and add it to a header.
}
Run Code Online (Sandbox Code Playgroud)

那可能吗?

java hash servlets

6
推荐指数
1
解决办法
1733
查看次数

仅在Java Filter中更改ContentType或CharacterEncoding如果ContentType === JSON

我正在尝试确保来自基于Jersey的java应用程序的所有JSON响应都在其ContentType标头中附加了UTF-8字符编码参数.

所以,如果它是一个JSON响应,我想响应报头的Content-Type

Content-Type:application/json; charset = UTF-8

EDIT: I know I can do this on a case by case basis, but I'd like to do it globally, so it affects all content responses that have a content type of "application/json".

如果我只是尝试在我的过滤器中设置字符编码,无论内容类型如何,它都可以正常工作.但是我只想在ContentType为"application/json"时设置字符编码.我发现response.getContentType()方法总是返回null,除非我先调用chain.doFilter.但是如果我在此之后尝试更改字符编码,它似乎总是会被覆盖.

import java.io.IOException;
import javax.servlet.*;
import javax.servlet.http.*;
import javax.ws.rs.core.MediaType;

public class EnsureJsonResponseIsUtf8Filter implements Filter
{
    private class SimpleWrapper extends HttpServletResponseWrapper
    {
        public SimpleWrapper(HttpServletResponse response)
        {
            super(response);
        }

        @Override
        public String getCharacterEncoding()
        {
            return "UTF-8";
        }
    }

    @Override
    public void …
Run Code Online (Sandbox Code Playgroud)

java content-type filter jersey-2.0

5
推荐指数
2
解决办法
1万
查看次数

如何从Servlet 2.3或2.5中的响应中获取头

我知道v3.0有方法getHeader()但2.3怎么样?也许有可能从蒸汽中获得?

更新:

实际上,我需要HTTP响应头RESTful应用程序.出于某种原因,我已决定在servlet过滤器中执行此操作...但没有成功...解决方案@javax.ws.rs.core.Context HttpHeaders requestHeaders.

例如,

@javax.ws.rs.GET
public String invoceRestMethod(@Context HttpHeaders requestHeaders){
      MultivaluedMap<String, String> map = headers.getRequestHeaders();
      for (Map.Entry<String, List<String>> entry : map.entrySet()) {
      //  processing header.... 
      }     
}
Run Code Online (Sandbox Code Playgroud)

也许会帮助某人.但无论如何,对于Servlet问题仍然是开放的

java servlets java-ee servlet-filters servlet-2.5

4
推荐指数
1
解决办法
4283
查看次数

仅记录http servlet响应标头

这是与Capture相关的问题并记录响应正文.如果我只想记录响应头而不是整个身体怎么办?是否有与链接问题中描述的方法不同的方法?

java servlets http httpresponse

3
推荐指数
1
解决办法
5514
查看次数