我使用的是Apache camel 2.15.1版本。在本文中,我将servlet组件用于rest dsl。我的简单路线如下所示
from(rest:get:CustomerDetails.json)。到(”http://localhost:8080/customer/getCustomerDetails?bridgeEndpoint=true”;
我需要设置Cache-Control和Pragma头以进行响应。
from(rest:get:CustomerDetails.json)。到(”http://localhost:8080/customer/getCustomerDetails?bridgeEndpoint=truesetHeader(“缓存控制”,常量(“私有,最大年龄=0,无存储”);
但是骆驼忽略了这一点。我看了几个其他人的博客,建议使用自定义的HeaderFilterStrategy。我也尝试过这个。没有帮助。
https://access.redhat.com/documentation/en-US/Red_Hat_JBoss_Fuse/6.0/html/Web_Services_and_Routing_with_Camel_CXF/files/Proxying-Headers.html
https://issues.apache.org/jira/browse/CAMEL-6085
非常感谢您为解决此问题提供的任何帮助。
您可以让它与自定义HeaderFilterStrategy一起工作。诀窍是在restConfiguration(). endpoint Properties(...)中配置它,如下所示:
public void configure() {
JndiRegistry registry = getContext().getRegistry(JndiRegistry.class);
registry.bind("filter", new HeaderFilter());
restConfiguration()
.host("localhost")
.endpointProperty("headerFilterStrategy","#filter")
.setPort("10000");
from("rest:get:hello")
.to("http://localhost:20000?bridgeEndpoint=true")
.setHeader("Cache-Control",constant("private, max-age=0,no-store"));
from("netty-http:http://localhost:20000")
.setBody(constant("ok"));
}
其中#filter只是像这样的虚拟实现(您可以创建一个更适合您需求的过滤器)
public class HeaderFilter implements HeaderFilterStrategy {
@Override
public boolean applyFilterToCamelHeaders(String arg0, Object arg1, Exchange arg2) {
// TODO Auto-generated method stub
return false;
}
@Override
public boolean applyFilterToExternalHeaders(String arg0, Object arg1, Exchange arg2) {
// TODO Auto-generated method stub
return false;
}
}
现在,如果我不走我的路线。endpointProperty(“headerFilterStrategy”,“#filter”)行我得到如下输出
$ curl -D - http://localhost:10000/hello
HTTP/1.1 200 OK
Accept: */*
breadcrumbId: ID-myhost-40508-1441899753215-0-1
User-Agent: curl/7.35.0
Content-Length: 2
Connection: keep-alive
ok
并且使用. endpoint Property(“HeaderFilterStrategy”、“#filter”)行输出,如下所示
$ curl -D - http://localhost:10000/hello
HTTP/1.1 200 OK
Accept: */*
breadcrumbId: ID-myhost-56308-1441899833287-0-1
Cache-Control: private, max-age=0,no-store
CamelHttpMethod: GET
CamelHttpResponseCode: 200
CamelHttpUri: /hello
CamelHttpUrl: http://localhost:10000/hello
CamelNettyChannelHandlerContext: org.jboss.netty.channel.DefaultChannelPipeline$DefaultChannelHandlerContext@1fac34b
CamelNettyLocalAddress: /127.0.0.1:10000
CamelNettyMessageEvent: [id: 0x93dfe147, /127.0.0.1:35302 => /127.0.0.1:10000] RECEIVED: DefaultHttpRequest(chunked: false) GET /hello HTTP/1.1 User-Agent: curl/7.35.0 Host: localhost:10000 Accept: */*
CamelNettyRemoteAddress: /127.0.0.1:35302
User-Agent: curl/7.35.0
Content-Length: 2
Connection: keep-alive
ok
我正在使用: Spring 3.1.2.发布 Primefaces JSF 3.4.1 null 我没有什么想法了,有人知道是什么在我的响应中设置这些头,以便我可以针对适当的部署组件来解决这个问题吗?
Cache-Control通用头字段用于指定在两个,请求和响应的缓存机制的指令。缓存指令是单向的,这意味着请求中的给定指令并不意味着将在响应中给出相同的指令。 Header type General header Forbidden header name no CORS-safelisted response-header yes 语法 这些指令不区分大小写,并且有一个可选参数,可以同时使用令牌
控制器能处理带有'Cache-Control'、'ETag'及/或'If-Modified-Since'头的请求,如果服务端在响应中设置了'Cache-Control'响应头,那么我们推荐在控制器内对这些请求头进行处理。这涉及一些工作:计算最后更改时间long和/或请求的ETag值、与请求头的'If-Modified-Since'值做比较,并且在资源未更改的情况下在响应中返回一个304(资源未更改
问题内容: 我尝试使用这个 但这会导致出现重复的Cache-Control标头。我只想要max-age = 300,而不是max-age = 1209600行! 问题答案: 使用对象 ; 这是一个实例,可让你直接设置各种缓存属性。此外,如果已经有一个重复的标题,请确保不要添加重复的标题。
我在浏览器中得到的是: 我想要的是:
我遇到了这个问题,找不到一个简单的php示例,可以在上传到google云存储时设置对象缓存控制。我知道它是一个关于对象的setMetadata,但我不知道如何做到这一点。使用gsutil并不能削减它,因为它对于web应用程序来说不是动态的。 到目前为止,这是我所拥有的,但setMetadata行抛出错误。谁能帮忙纠正那条线吗?请注意,授权令牌在以下内容之前已经获得