Java 类io.netty.handler.codec.http.HttpResponse 实例源码
项目:redant
文件:AfterHandleInterceptor.java
@Override
public void channelRead(ChannelHandlerContext ctx, Object msg) throws Exception {
// 当拦截的方法返回false直接返回,否则进入下一个handler
if(!afterHandle(ctx, msg)){
// 释放ThreadLocal对象
DataHolder.removeAll();
HttpResponse response = HttpRenderUtil.render(null,HttpRenderUtil.CONTENT_TYPE_TEXT);
// 从该channel直接返回
ctx.channel().writeAndFlush(response).addListener(ChannelFutureListener.CLOSE);
return;
}
/**
* 提交给下一个ChannelHandler去处理
* 并且不需要调用ReferenceCountUtil.release(msg);来释放引用计数
*/
ctx.fireChannelRead(msg);
}
项目:TFWebSock
文件:NettyHttpFileHandler.java
/**
* Sets the Date and Cache headers for the HTTP Response
*
* @param response
* HTTP response
* @param fileToCache
* file to extract content type
*/
public void setDateAndCacheHeaders(HttpResponse response, File fileToCache) {
SimpleDateFormat dateFormatter = new SimpleDateFormat(HTTP_DATE_FORMAT, Locale.US);
dateFormatter.setTimeZone(TimeZone.getTimeZone(HTTP_DATE_GMT_TIMEZONE));
// Date header
Calendar time = new GregorianCalendar();
response.headers().set(HttpHeaders.Names.DATE, dateFormatter.format(time.getTime()));
// Add cache headers
time.add(Calendar.SECOND, HTTP_CACHE_SECONDS);
response.headers().set(HttpHeaders.Names.EXPIRES, dateFormatter.format(time.getTime()));
response.headers().set(HttpHeaders.Names.CACHE_CONTROL, "private, max-age=" + HTTP_CACHE_SECONDS);
response.headers().set(
HttpHeaders.Names.LAST_MODIFIED, dateFormatter.format(new Date(fileToCache.lastModified())));
}
项目:proxyee
文件:HttpProxyClientHandle.java
@Override
public void channelRead(ChannelHandlerContext ctx, Object msg) throws Exception {
//客户端channel已关闭则不转发了
if (!clientChannel.isOpen()) {
ReferenceCountUtil.release(msg);
return;
}
HttpProxyInterceptPipeline interceptPipeline = ((HttpProxyServerHandle) clientChannel.pipeline()
.get("serverHandle")).getInterceptPipeline();
if (msg instanceof HttpResponse) {
interceptPipeline.afterResponse(clientChannel, ctx.channel(), (HttpResponse) msg);
} else if (msg instanceof HttpContent) {
interceptPipeline.afterResponse(clientChannel, ctx.channel(), (HttpContent) msg);
} else {
clientChannel.writeAndFlush(msg);
}
}
项目:xrpc
文件:Example.java
private static HttpResponse setDino(XrpcRequest request, List<Dino> dinos) {
try {
Optional<DinoSetRequest> setRequest =
Optional.of(
DinoSetRequest.parseFrom(
CodedInputStream.newInstance(request.getData().nioBuffer())));
setRequest.ifPresent(req -> dinos.add(req.getDino()));
return Recipes.newResponse(
HttpResponseStatus.OK,
request
.getByteBuf()
.writeBytes(DinoSetReply.newBuilder().setResponseCode("OK").build().toByteArray()),
Recipes.ContentType.Application_Octet_Stream);
} catch (IOException e) {
return Recipes.newResponseBadRequest("Malformed SetDino Request: " + e.getMessage());
}
}
项目:nitmproxy
文件:Http2FrontendHandler.java
@Override
public void write(ChannelHandlerContext ctx, Object msg, ChannelPromise promise) throws Exception {
LOGGER.info("[Client ({})] <= [Server ({})] : {}",
connectionInfo.getClientAddr(), connectionInfo.getServerAddr(),
msg);
if (msg instanceof HttpResponse) {
HttpResponse response = (HttpResponse) msg;
if (!response.headers().contains(HttpConversionUtil.ExtensionHeaderNames.STREAM_ID.text())) {
if (streams.isEmpty()) {
throw new IllegalStateException("No active streams");
}
response.headers().add(HttpConversionUtil.ExtensionHeaderNames.STREAM_ID.text(),
streams.poll());
}
}
ctx.write(msg, promise);
}
项目:elasticsearch_my
文件:Netty4CorsHandler.java
public static void setCorsResponseHeaders(HttpRequest request, HttpResponse resp, Netty4CorsConfig config) {
if (!config.isCorsSupportEnabled()) {
return;
}
String originHeader = request.headers().get(HttpHeaderNames.ORIGIN);
if (!Strings.isNullOrEmpty(originHeader)) {
final String originHeaderVal;
if (config.isAnyOriginSupported()) {
originHeaderVal = ANY_ORIGIN;
} else if (config.isOriginAllowed(originHeader) || isSameOrigin(originHeader, request.headers().get(HttpHeaderNames.HOST))) {
originHeaderVal = originHeader;
} else {
originHeaderVal = null;
}
if (originHeaderVal != null) {
resp.headers().add(HttpHeaderNames.ACCESS_CONTROL_ALLOW_ORIGIN, originHeaderVal);
}
}
if (config.isCredentialsAllowed()) {
resp.headers().add(HttpHeaderNames.ACCESS_CONTROL_ALLOW_CREDENTIALS, "true");
}
}
项目:elasticsearch_my
文件:Netty4CorsHandler.java
private boolean setOrigin(final HttpResponse response) {
final String origin = request.headers().get(HttpHeaderNames.ORIGIN);
if (!Strings.isNullOrEmpty(origin)) {
if ("null".equals(origin) && config.isNullOriginAllowed()) {
setAnyOrigin(response);
return true;
}
if (config.isAnyOriginSupported()) {
if (config.isCredentialsAllowed()) {
echoRequestOrigin(response);
setVaryHeader(response);
} else {
setAnyOrigin(response);
}
return true;
}
if (config.isOriginAllowed(origin)) {
setOrigin(response, origin);
setVaryHeader(response);
return true;
}
}
return false;
}
项目:ace
文件:StaticFileServerHandler.java
/**
* Sets the Date and Cache headers for the HTTP Response
*
* @param response HTTP response
* @param fileToCache file to extract content type
*/
private static void setDateAndCacheHeaders(HttpResponse response, File fileToCache) {
SimpleDateFormat dateFormatter = new SimpleDateFormat(HTTP_DATE_FORMAT, Locale.US);
dateFormatter.setTimeZone(TimeZone.getTimeZone(HTTP_DATE_GMT_TIMEZONE));
// Date header
Calendar time = new GregorianCalendar();
response.headers().set(HttpHeaderNames.DATE, dateFormatter.format(time.getTime()));
// Add cache headers
time.add(Calendar.SECOND, HTTP_CACHE_SECONDS);
response.headers().set(HttpHeaderNames.EXPIRES, dateFormatter.format(time.getTime()));
response.headers().set(HttpHeaderNames.CACHE_CONTROL, "private, max-age=" + HTTP_CACHE_SECONDS);
response.headers().set(
HttpHeaderNames.LAST_MODIFIED, dateFormatter.format(new Date(fileToCache.lastModified())));
}
项目:tasfe-framework
文件:NettyHttpServletResponse.java
/**
* Get a Netty {@link HttpResponse}, committing the {@link HttpServletResponse}.
*/
public HttpResponse getNettyResponse() {
if (committed) {
return response;
}
committed = true;
HttpHeaders headers = response.headers();
if (null != contentType) {
String value = null == characterEncoding ? contentType : contentType + "; charset=" + characterEncoding;
headers.set(HttpHeaders.Names.CONTENT_TYPE, value);
}
CharSequence date = getFormattedDate();
headers.set(HttpHeaders.Names.DATE, date);
headers.set(HttpHeaders.Names.SERVER, servletContext.getServerInfoAscii());
// TODO cookies
return response;
}
项目:HFSN
文件:HttpFileServerHandler.java
/**
* Sets the Date and Cache headers for the HTTP Response
*
* @param response HTTP response
* @param fileToCache file to extract content type
*/
private void setDateAndCacheHeaders(HttpResponse response, File fileToCache) {
SimpleDateFormat dateFormatter = new SimpleDateFormat(HTTP_DATE_FORMAT, Locale.US);
dateFormatter.setTimeZone(TimeZone.getTimeZone(HTTP_DATE_GMT_TIMEZONE));
// Date header
Calendar time = new GregorianCalendar();
response.headers().set(HttpHeaderNames.DATE, dateFormatter.format(time.getTime()));
// Add cache headers
time.add(Calendar.SECOND, HTTP_CACHE_SECONDS);
response.headers().set(HttpHeaderNames.EXPIRES, dateFormatter.format(time.getTime()));
response.headers().set(HttpHeaderNames.CACHE_CONTROL, "private, max-age=" + HTTP_CACHE_SECONDS);
response.headers().set(
HttpHeaderNames.LAST_MODIFIED, dateFormatter.format(new Date(fileToCache.lastModified())));
}
项目:proxyee-down
文件:HttpDownUtil.java
public static void startDownTask(TaskInfo taskInfo, HttpRequest httpRequest,
HttpResponse httpResponse, Channel clientChannel) {
HttpHeaders httpHeaders = httpResponse.headers();
HttpDownInfo httpDownInfo = new HttpDownInfo(taskInfo, httpRequest);
HttpDownServer.DOWN_CONTENT.put(taskInfo.getId(), httpDownInfo);
httpHeaders.clear();
httpResponse.setStatus(HttpResponseStatus.OK);
httpHeaders.set(HttpHeaderNames.CONTENT_TYPE, "text/html");
String host = HttpDownServer.isDev() ? "localhost"
: ((InetSocketAddress) clientChannel.localAddress()).getHostString();
String js =
"<script>window.top.location.href='http://" + host + ":" + HttpDownServer.VIEW_SERVER_PORT
+ "/#/tasks/new/" + httpDownInfo
.getTaskInfo().getId()
+ "';</script>";
HttpContent content = new DefaultLastHttpContent();
content.content().writeBytes(js.getBytes());
httpHeaders.set(HttpHeaderNames.CONTENT_LENGTH, js.getBytes().length);
clientChannel.writeAndFlush(httpResponse);
clientChannel.writeAndFlush(content);
clientChannel.close();
}
项目:util4j
文件:NettyHttpClient.java
/**
* 同步请求
* @param host
* @param port
* @param request
* @return 超时返回null
*/
public HttpResponse syncRequest(String host,int port,HttpRequest request)
{
HttpResponse response=null;
synchronized (request) {
if(response==null)
{
HttpListener listener=new HttpListener(request);
NettyClient client=new NettyClient(config,new InetSocketAddress(host, port),new HttpClientInitHandler(listener));
client.start();
response=listener.waitResponse();//阻塞等待结果
client.stop();
}
}
return response;
}
项目:util4j
文件:NettyHttpClient.java
/**
* 同步请求
* @param host
* @param port
* @param request
* @param waiteTimeMills
* @return 超时返回null
*/
public HttpResponse syncRequest(String host,int port,HttpRequest request,long waiteTimeMills)
{
HttpResponse response=null;
synchronized (request) {
if(response==null)
{
HttpListener listener=new HttpListener(request);
NettyClient client=new NettyClient(config,new InetSocketAddress(host, port),new HttpClientInitHandler(listener));
client.start();
response=listener.waitResponse(waiteTimeMills);//阻塞等待结果
client.stop();
}
}
return response;
}
项目:bromium
文件:ReplayRequestFilter.java
@Override
public HttpResponse filterRequest(HttpRequest httpRequest, HttpMessageContents httpMessageContents, HttpMessageInfo httpMessageInfo) {
replayingState.addHttpRequestToQueue(httpMessageInfo.getOriginalRequest());
replayingState.setHttpLock(false);
for (ConditionsUpdater conditionsUpdater: conditionsUpdaters) {
if (conditionsUpdater.shouldUpdate().test(httpRequest)) {
try {
URL url = new URL(httpRequest.getUri());
String event = url.getQuery();
conditionsUpdater.updater().update(replayingState, event);
} catch (MalformedURLException e) {
logger.error(e.getMessage(), e);
}
}
}
return null;
}
项目:bromium
文件:RecordRequestFilter.java
@Override
public HttpResponse filterRequest(HttpRequest httpRequest, HttpMessageContents httpMessageContents, HttpMessageInfo httpMessageInfo) {
for (EventDetector eventDetector: eventDetectors) {
if (eventDetector.canDetectPredicate().test(httpRequest)) {
try {
Optional<Map<String, String>> optionalEvent = eventDetector.getConverter().convert(httpRequest);
if (optionalEvent.isPresent()) {
Map<String, String> event = optionalEvent.get();
recordingState.storeTestCaseStep(event);
logger.info("Recorded event {}", event);
}
} catch (UnsupportedEncodingException | MalformedURLException e) {
logger.error("Error while trying to convert test case step", e);
}
}
}
return null;
}
项目:proxyee-down
文件:BdyBatchDownIntercept.java
@Override
public void afterResponse(Channel clientChannel, Channel proxyChannel, HttpResponse httpResponse,
HttpProxyInterceptPipeline pipeline) throws Exception {
if (HttpDownUtil.checkReferer(pipeline.getHttpRequest(), "^https?://pan.baidu.com/disk/home.*$")
&& HttpDownUtil.checkUrl(pipeline.getHttpRequest(), "^.*method=batchdownload.*$")) {
HttpHeaders resHeaders = httpResponse.headers();
long fileSize = HttpDownUtil.getDownFileSize(resHeaders);
//百度合并下载分段最多为16M
int connections = (int) Math.ceil(fileSize / CHUNK_16M);
TaskInfo taskInfo = new TaskInfo()
.setId(UUID.randomUUID().toString())
.setFileName(HttpDownUtil.getDownFileName(pipeline.getHttpRequest(), resHeaders))
.setTotalSize(HttpDownUtil.getDownFileSize(resHeaders))
.setConnections(connections)
.setSupportRange(true);
HttpDownUtil.startDownTask(taskInfo, pipeline.getHttpRequest(), httpResponse, clientChannel);
return;
}
pipeline.afterResponse(clientChannel, proxyChannel, httpResponse);
}
项目:proxy-server
文件:ProxyServerFilter.java
@Override
public HttpResponse clientToProxyRequest(HttpObject httpObject) {
if (httpObject instanceof HttpRequest) {
System.err.println("--->" + ((HttpRequest) httpObject).getUri());
}
return super.clientToProxyRequest(httpObject);
}
项目:GitHub
文件:NettyHttpClient.java
@Override protected void channelRead0(
ChannelHandlerContext context, HttpObject message) throws Exception {
if (message instanceof HttpResponse) {
receive((HttpResponse) message);
}
if (message instanceof HttpContent) {
receive((HttpContent) message);
if (message instanceof LastHttpContent) {
release(this);
}
}
}
项目:GitHub
文件:NettyHttpClient.java
@Override protected void channelRead0(
ChannelHandlerContext context, HttpObject message) throws Exception {
if (message instanceof HttpResponse) {
receive((HttpResponse) message);
}
if (message instanceof HttpContent) {
receive((HttpContent) message);
if (message instanceof LastHttpContent) {
release(this);
}
}
}
项目:redant
文件:PreHandleInterceptor.java
@Override
public void channelRead(ChannelHandlerContext ctx, Object msg) throws Exception {
// 当拦截的方法返回false直接返回,否则进入下一个handler
if(!preHandle(ctx, msg)){
HttpResponse response = HttpRenderUtil.render(null,HttpRenderUtil.CONTENT_TYPE_TEXT);
// 从该channel直接返回
ctx.channel().writeAndFlush(response).addListener(ChannelFutureListener.CLOSE);
return;
}
/**
* 提交给下一个ChannelHandler去处理
* 并且不需要调用ReferenceCountUtil.release(msg);来释放引用计数
*/
ctx.fireChannelRead(msg);
}
项目:redant
文件:CookieManager.java
/**
* 设置所有的Cookie
*/
@Deprecated
public static void setCookies(){
HttpRequest request = DataHolder.getHttpRequest();
HttpResponse response = DataHolder.getHttpResponse();
CookieHelper.setCookies(request,response);
}
项目:proxyee-down
文件:HttpDownIntercept.java
@Override
public void afterResponse(Channel clientChannel, Channel proxyChannel, HttpResponse httpResponse,
HttpProxyInterceptPipeline pipeline) throws Exception {
TaskInfo taskInfo = HttpDownUtil
.getTaskInfo(pipeline.getHttpRequest(), httpResponse.headers(), HttpDownServer.CLIENT_SSL_CONTEXT,
HttpDownServer.LOOP_GROUP);
HttpDownUtil.startDownTask(taskInfo, pipeline.getHttpRequest(), httpResponse, clientChannel);
}
项目:redant
文件:CookieManager.java
/**
* 删除一个Cookie
* @param name
* @return
*/
@Deprecated
public static boolean deleteCookie(String name) {
HttpRequest request = DataHolder.getHttpRequest();
HttpResponse response = DataHolder.getHttpResponse();
return CookieHelper.deleteCookie(request,response,name);
}
项目:redant
文件:CookieHelper.java
/**
* 设置所有的Cookie
* @param request
* @param response
*/
public static void setCookies(HttpRequest request,HttpResponse response){
Set<Cookie> cookies = getCookies(request);
if (!cookies.isEmpty()) {
for (Cookie cookie : cookies) {
setCookie(response,cookie);
}
}
}
项目:redant
文件:CookieHelper.java
/**
* 添加一个Cookie
* @param response response
* @param name cookie名字
* @param value cookie值
* @param domain cookie所在域
* @param maxAge cookie生命周期 以秒为单位
*/
public static void addCookie(HttpResponse response,String name,String value,String domain,long maxAge){
Cookie cookie = new DefaultCookie(name,value);
cookie.setPath("/");
if(domain!=null && domain.trim().length()>0) {
cookie.setDomain(domain);
}
if(maxAge>0){
cookie.setMaxAge(maxAge);
}
setCookie(response,cookie);
}
项目:redant
文件:CookieHelper.java
/**
* 删除一个Cookie
* @param request
* @param response
* @param name
* @return
*/
public static boolean deleteCookie(HttpRequest request,HttpResponse response,String name) {
Cookie cookie = getCookie(request,name);
if(cookie!=null){
cookie.setMaxAge(0);
cookie.setPath("/");
setCookie(response,cookie);
return true;
}
return false;
}
项目:redant
文件:ControllerDispatcher.java
@Override
public void channelRead(ChannelHandlerContext ctx, Object msg) {
if(msg instanceof HttpRequest){
HttpRequest request = (HttpRequest) msg;
boolean forceClose = false;
HttpResponse response;
try{
// 获得路由结果
RouteResult<RenderType> routeResult = RouterContext.getRouteResult(request.method(),request.uri());
// 根据路由获得具体的ControllerProxy
ControllerProxy controllerProxy = RouterContext.getControllerProxy(routeResult);
if(controllerProxy == null){
forceClose = true;
response = HttpRenderUtil.getNotFoundResponse();
}else {
// 每一个Controller的方法返回类型约定为Render的实现类
Render render = ProxyInvocation.invoke(controllerProxy);
response = render.response();
}
}catch(Exception e){
routerLogger.error("Server Internal Error,cause:",e);
forceClose = true;
if(e instanceof IllegalArgumentException || e instanceof InvocationException){
response = HttpRenderUtil.getErrorResponse(e.getMessage());
}else{
response = HttpRenderUtil.getServerErrorResponse();
}
}
DataHolder.store(DataHolder.HolderType.FORCE_CLOSE,forceClose);
DataHolder.store(DataHolder.HolderType.RESPONSE,response);
}
/**
* 提交给下一个ChannelHandler去处理
* 并且不需要调用ReferenceCountUtil.release(msg);来释放引用计数
*/
ctx.fireChannelRead(msg);
}
项目:push-network-proxies
文件:MockingFCMProxyServer.java
public HttpProxyServer start() {
return DefaultHttpProxyServer.bootstrap()
.withAddress(new InetSocketAddress(host, port))
.withFiltersSource(new HttpFiltersSourceAdapter() {
@Override
public HttpFilters filterRequest(HttpRequest originalRequest) {
return new HttpFiltersAdapter(originalRequest) {
final String mockedAddress = mockServer + ":" + mockPort;
@Override
public HttpResponse clientToProxyRequest(HttpObject httpObject) {
final HttpRequest request = (HttpRequest) httpObject;
if (request.getUri().contains("google")) {
request.setUri(mockedAddress);
}
super.clientToProxyRequest(request);
return null;
}
};
}
}).start();
}
项目:proxyee
文件:HttpProxyInterceptPipeline.java
public void afterResponse(Channel clientChannel, Channel proxyChannel, HttpResponse httpResponse)
throws Exception {
if (this.pos3 == 0) {
this.httpResponse = httpResponse;
}
if (this.pos3 < intercepts.size()) {
HttpProxyIntercept intercept = intercepts.get(this.pos3++);
intercept.afterResponse(clientChannel, proxyChannel, this.httpResponse, this);
}
this.pos3 = 0;
}
项目:nitmproxy
文件:Http1BackendHandler.java
@Override
protected void channelRead0(ChannelHandlerContext channelHandlerContext, HttpObject httpObject)
throws Exception {
LOGGER.info("[Client ({})] <= [Server ({})] : {}",
connectionInfo.getClientAddr(), connectionInfo.getServerAddr(),
httpObject);
outboundChannel.writeAndFlush(ReferenceCountUtil.retain(httpObject));
if (httpObject instanceof HttpResponse) {
currentRequest = null;
delayOutboundHandler.next();
}
}
项目:nitmproxy
文件:HttpObjectUtil.java
public static ByteBuf responseBytes(HttpResponse response) {
String resp = String.format("%s %s %s\r\n%s\r\n",
response.protocolVersion(),
response.status().codeAsText(),
response.status().reasonPhrase(),
headersString(response.headers()));
return Unpooled.buffer().writeBytes(resp.getBytes());
}
项目:elasticsearch_my
文件:Netty4HttpChannel.java
private void addCookies(HttpResponse resp) {
if (transport.resetCookies) {
String cookieString = nettyRequest.headers().get(HttpHeaders.Names.COOKIE);
if (cookieString != null) {
Set<io.netty.handler.codec.http.cookie.Cookie> cookies = ServerCookieDecoder.STRICT.decode(cookieString);
if (!cookies.isEmpty()) {
// Reset the cookies if necessary.
resp.headers().set(HttpHeaderNames.SET_COOKIE, ServerCookieEncoder.STRICT.encode(cookies));
}
}
}
}
项目:elasticsearch_my
文件:Netty4HttpChannel.java
private void addCustomHeaders(HttpResponse response, Map<String, List<String>> customHeaders) {
if (customHeaders != null) {
for (Map.Entry<String, List<String>> headerEntry : customHeaders.entrySet()) {
for (String headerValue : headerEntry.getValue()) {
setHeaderField(response, headerEntry.getKey(), headerValue);
}
}
}
}
项目:elasticsearch_my
文件:Netty4CorsHandler.java
private void handlePreflight(final ChannelHandlerContext ctx, final HttpRequest request) {
final HttpResponse response = new DefaultFullHttpResponse(request.protocolVersion(), HttpResponseStatus.OK, true, true);
if (setOrigin(response)) {
setAllowMethods(response);
setAllowHeaders(response);
setAllowCredentials(response);
setMaxAge(response);
setPreflightHeaders(response);
ctx.writeAndFlush(response).addListener(ChannelFutureListener.CLOSE);
} else {
forbidden(ctx, request);
}
}
项目:elasticsearch_my
文件:Netty4HttpChannelTests.java
public void testCorsEnabledWithoutAllowOrigins() {
// Set up a HTTP transport with only the CORS enabled setting
Settings settings = Settings.builder()
.put(HttpTransportSettings.SETTING_CORS_ENABLED.getKey(), true)
.build();
HttpResponse response = executeRequest(settings, "remote-host", "request-host");
// inspect response and validate
assertThat(response.headers().get(HttpHeaderNames.ACCESS_CONTROL_ALLOW_ORIGIN), nullValue());
}
项目:elasticsearch_my
文件:Netty4HttpChannelTests.java
public void testCorsEnabledWithAllowOrigins() {
final String originValue = "remote-host";
// create a http transport with CORS enabled and allow origin configured
Settings settings = Settings.builder()
.put(SETTING_CORS_ENABLED.getKey(), true)
.put(SETTING_CORS_ALLOW_ORIGIN.getKey(), originValue)
.build();
HttpResponse response = executeRequest(settings, originValue, "request-host");
// inspect response and validate
assertThat(response.headers().get(HttpHeaderNames.ACCESS_CONTROL_ALLOW_ORIGIN), notNullValue());
String allowedOrigins = response.headers().get(HttpHeaderNames.ACCESS_CONTROL_ALLOW_ORIGIN);
assertThat(allowedOrigins, is(originValue));
}
项目:elasticsearch_my
文件:Netty4HttpChannelTests.java
public void testCorsAllowOriginWithSameHost() {
String originValue = "remote-host";
String host = "remote-host";
// create a http transport with CORS enabled
Settings settings = Settings.builder()
.put(SETTING_CORS_ENABLED.getKey(), true)
.build();
HttpResponse response = executeRequest(settings, originValue, host);
// inspect response and validate
assertThat(response.headers().get(HttpHeaderNames.ACCESS_CONTROL_ALLOW_ORIGIN), notNullValue());
String allowedOrigins = response.headers().get(HttpHeaderNames.ACCESS_CONTROL_ALLOW_ORIGIN);
assertThat(allowedOrigins, is(originValue));
originValue = "http://" + originValue;
response = executeRequest(settings, originValue, host);
assertThat(response.headers().get(HttpHeaderNames.ACCESS_CONTROL_ALLOW_ORIGIN), notNullValue());
allowedOrigins = response.headers().get(HttpHeaderNames.ACCESS_CONTROL_ALLOW_ORIGIN);
assertThat(allowedOrigins, is(originValue));
originValue = originValue + ":5555";
host = host + ":5555";
response = executeRequest(settings, originValue, host);
assertThat(response.headers().get(HttpHeaderNames.ACCESS_CONTROL_ALLOW_ORIGIN), notNullValue());
allowedOrigins = response.headers().get(HttpHeaderNames.ACCESS_CONTROL_ALLOW_ORIGIN);
assertThat(allowedOrigins, is(originValue));
originValue = originValue.replace("http", "https");
response = executeRequest(settings, originValue, host);
assertThat(response.headers().get(HttpHeaderNames.ACCESS_CONTROL_ALLOW_ORIGIN), notNullValue());
allowedOrigins = response.headers().get(HttpHeaderNames.ACCESS_CONTROL_ALLOW_ORIGIN);
assertThat(allowedOrigins, is(originValue));
}
项目:elasticsearch_my
文件:Netty4HttpChannelTests.java
public void testThatStringLiteralWorksOnMatch() {
final String originValue = "remote-host";
Settings settings = Settings.builder()
.put(SETTING_CORS_ENABLED.getKey(), true)
.put(SETTING_CORS_ALLOW_ORIGIN.getKey(), originValue)
.put(SETTING_CORS_ALLOW_METHODS.getKey(), "get, options, post")
.put(SETTING_CORS_ALLOW_CREDENTIALS.getKey(), true)
.build();
HttpResponse response = executeRequest(settings, originValue, "request-host");
// inspect response and validate
assertThat(response.headers().get(HttpHeaderNames.ACCESS_CONTROL_ALLOW_ORIGIN), notNullValue());
String allowedOrigins = response.headers().get(HttpHeaderNames.ACCESS_CONTROL_ALLOW_ORIGIN);
assertThat(allowedOrigins, is(originValue));
assertThat(response.headers().get(HttpHeaderNames.ACCESS_CONTROL_ALLOW_CREDENTIALS), equalTo("true"));
}
项目:elasticsearch_my
文件:Netty4HttpChannelTests.java
public void testThatAnyOriginWorks() {
final String originValue = Netty4CorsHandler.ANY_ORIGIN;
Settings settings = Settings.builder()
.put(SETTING_CORS_ENABLED.getKey(), true)
.put(SETTING_CORS_ALLOW_ORIGIN.getKey(), originValue)
.build();
HttpResponse response = executeRequest(settings, originValue, "request-host");
// inspect response and validate
assertThat(response.headers().get(HttpHeaderNames.ACCESS_CONTROL_ALLOW_ORIGIN), notNullValue());
String allowedOrigins = response.headers().get(HttpHeaderNames.ACCESS_CONTROL_ALLOW_ORIGIN);
assertThat(allowedOrigins, is(originValue));
assertThat(response.headers().get(HttpHeaderNames.ACCESS_CONTROL_ALLOW_CREDENTIALS), nullValue());
}
项目:elasticsearch_my
文件:Netty4HttpChannelTests.java
public void testHeadersSet() {
Settings settings = Settings.builder().build();
try (Netty4HttpServerTransport httpServerTransport =
new Netty4HttpServerTransport(settings, networkService, bigArrays, threadPool, xContentRegistry(),
new NullDispatcher())) {
httpServerTransport.start();
final FullHttpRequest httpRequest = new DefaultFullHttpRequest(HttpVersion.HTTP_1_1, HttpMethod.GET, "/");
httpRequest.headers().add(HttpHeaderNames.ORIGIN, "remote");
final WriteCapturingChannel writeCapturingChannel = new WriteCapturingChannel();
Netty4HttpRequest request = new Netty4HttpRequest(xContentRegistry(), httpRequest, writeCapturingChannel);
// send a response
Netty4HttpChannel channel =
new Netty4HttpChannel(httpServerTransport, request, null, randomBoolean(), threadPool.getThreadContext());
TestResponse resp = new TestResponse();
final String customHeader = "custom-header";
final String customHeaderValue = "xyz";
resp.addHeader(customHeader, customHeaderValue);
channel.sendResponse(resp);
// inspect what was written
List<Object> writtenObjects = writeCapturingChannel.getWrittenObjects();
assertThat(writtenObjects.size(), is(1));
HttpResponse response = (HttpResponse) writtenObjects.get(0);
assertThat(response.headers().get("non-existent-header"), nullValue());
assertThat(response.headers().get(customHeader), equalTo(customHeaderValue));
assertThat(response.headers().get(HttpHeaderNames.CONTENT_LENGTH), equalTo(Integer.toString(resp.content().length())));
assertThat(response.headers().get(HttpHeaderNames.CONTENT_TYPE), equalTo(resp.contentType()));
}
}