org.apache.http.client.methods.HttpOptions#setHeader()源码实例Demo

下面列出了org.apache.http.client.methods.HttpOptions#setHeader() 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。

源代码1 项目: keycloak   文件: OAuthClient.java
public CloseableHttpResponse doPreflightRequest() {
    try (CloseableHttpClient client = httpClient.get()) {
        HttpOptions options = new HttpOptions(getAccessTokenUrl());
        options.setHeader("Origin", "http://example.com");

        return client.execute(options);
    } catch (IOException ioe) {
        throw new RuntimeException(ioe);
    }
}
 
源代码2 项目: keycloak   文件: AdminPreflightTest.java
@Test
public void testPreflight() throws IOException {
    HttpOptions options = new HttpOptions(getAdminUrl("realms/master/users"));
    options.setHeader("Origin", "http://test");

    CloseableHttpResponse response = client.execute(options);
    assertEquals(200, response.getStatusLine().getStatusCode());
    assertEquals("true", response.getFirstHeader(Cors.ACCESS_CONTROL_ALLOW_CREDENTIALS).getValue());
    assertEquals("DELETE, POST, GET, PUT", response.getFirstHeader(Cors.ACCESS_CONTROL_ALLOW_METHODS).getValue());
    assertEquals("http://test", response.getFirstHeader(Cors.ACCESS_CONTROL_ALLOW_ORIGIN).getValue());
    assertEquals("3600", response.getFirstHeader(Cors.ACCESS_CONTROL_MAX_AGE).getValue());
    assertTrue(response.getFirstHeader(Cors.ACCESS_CONTROL_ALLOW_HEADERS).getValue().contains("Authorization"));
    assertTrue(response.getFirstHeader(Cors.ACCESS_CONTROL_ALLOW_HEADERS).getValue().contains("Content-Type"));
}
 
源代码3 项目: crate   文件: AuthenticationIntegrationTest.java
@Test
public void testOptionsRequestDoesNotRequireAuth() throws Exception {
    HttpServerTransport httpTransport = internalCluster().getInstance(HttpServerTransport.class);
    InetSocketAddress address = httpTransport.boundAddress().publishAddress().address();
    String uri = String.format(Locale.ENGLISH, "http://%s:%s/", address.getHostName(), address.getPort());
    HttpOptions request = new HttpOptions(uri);
    request.setHeader(HttpHeaderNames.AUTHORIZATION.toString(), "Basic QXJ0aHVyOkV4Y2FsaWJ1cg==");
    request.setHeader(HttpHeaderNames.ORIGIN.toString(), "http://example.com");
    request.setHeader(HttpHeaderNames.ACCESS_CONTROL_REQUEST_METHOD.toString(), "GET");
    CloseableHttpClient httpClient = HttpClients.createDefault();
    CloseableHttpResponse resp = httpClient.execute(request);
    assertThat(resp.getStatusLine().getReasonPhrase(), is("OK"));
}
 
@Test
public void testCorsPreflightNegative() throws Exception {
    // No CORS headers
    HttpOptions request = new HttpOptions(presignedGET);
    HttpResponse response = httpClient.execute(request);
    /*
     * For non presigned URLs that should give a 400, but the
     * Access-Control-Request-Method header is needed for presigned URLs
     * to calculate the same signature. If this is missing it fails already
     * with 403 - Signature mismatch before processing the OPTIONS request
     * See testCorsPreflightPublicRead for that cases
     */
    assertThat(response.getStatusLine().getStatusCode())
            .isEqualTo(HttpStatus.SC_FORBIDDEN);

    // Not allowed origin
    request.reset();
    request.setHeader(HttpHeaders.ORIGIN, "https://example.org");
    request.setHeader(HttpHeaders.ACCESS_CONTROL_REQUEST_METHOD, "GET");
    response = httpClient.execute(request);
    assertThat(response.getStatusLine().getStatusCode())
            .isEqualTo(HttpStatus.SC_FORBIDDEN);

    // Not allowed method
    request.reset();
    request.setHeader(HttpHeaders.ORIGIN, "https://example.com");
    request.setHeader(HttpHeaders.ACCESS_CONTROL_REQUEST_METHOD, "PATCH");
    response = httpClient.execute(request);
    assertThat(response.getStatusLine().getStatusCode())
            .isEqualTo(HttpStatus.SC_FORBIDDEN);

    // Not allowed header
    request.reset();
    request.setHeader(HttpHeaders.ORIGIN, "https://example.com");
    request.setHeader(HttpHeaders.ACCESS_CONTROL_REQUEST_METHOD, "GET");
    request.setHeader(HttpHeaders.ACCESS_CONTROL_REQUEST_HEADERS,
          "Accept-Encoding");
    response = httpClient.execute(request);
    assertThat(response.getStatusLine().getStatusCode())
            .isEqualTo(HttpStatus.SC_FORBIDDEN);

    // Not allowed header combination
    request.reset();
    request.setHeader(HttpHeaders.ORIGIN, "https://example.com");
    request.setHeader(HttpHeaders.ACCESS_CONTROL_REQUEST_METHOD, "GET");
    request.setHeader(HttpHeaders.ACCESS_CONTROL_REQUEST_HEADERS,
            "Accept, Accept-Encoding");
    response = httpClient.execute(request);
    assertThat(response.getStatusLine().getStatusCode())
            .isEqualTo(HttpStatus.SC_FORBIDDEN);
}
 
@Test
public void testCorsPreflight() throws Exception {
    // Allowed origin and method
    HttpOptions request = new HttpOptions(presignedGET);
    request.setHeader(HttpHeaders.ORIGIN, "https://example.com");
    request.setHeader(HttpHeaders.ACCESS_CONTROL_REQUEST_METHOD, "GET");
    HttpResponse response = httpClient.execute(request);
    assertThat(response.getStatusLine().getStatusCode())
            .isEqualTo(HttpStatus.SC_OK);
    assertThat(response.containsHeader(
            HttpHeaders.ACCESS_CONTROL_ALLOW_ORIGIN)).isTrue();
    assertThat(response.getFirstHeader(
            HttpHeaders.ACCESS_CONTROL_ALLOW_ORIGIN).getValue())
            .isEqualTo("https://example.com");
    assertThat(response.containsHeader(
            HttpHeaders.ACCESS_CONTROL_ALLOW_METHODS)).isTrue();
    assertThat(response.getFirstHeader(
            HttpHeaders.ACCESS_CONTROL_ALLOW_METHODS).getValue())
            .isEqualTo("GET, PUT");

    // Allowed origin, method and header
    request.reset();
    request.setHeader(HttpHeaders.ORIGIN, "https://example.com");
    request.setHeader(HttpHeaders.ACCESS_CONTROL_REQUEST_METHOD, "GET");
    request.setHeader(HttpHeaders.ACCESS_CONTROL_REQUEST_HEADERS, "Accept");
    response = httpClient.execute(request);
    assertThat(response.getStatusLine().getStatusCode())
            .isEqualTo(HttpStatus.SC_OK);
    assertThat(response.containsHeader(
            HttpHeaders.ACCESS_CONTROL_ALLOW_ORIGIN)).isTrue();
    assertThat(response.getFirstHeader(
            HttpHeaders.ACCESS_CONTROL_ALLOW_ORIGIN).getValue())
            .isEqualTo("https://example.com");
    assertThat(response.containsHeader(
            HttpHeaders.ACCESS_CONTROL_ALLOW_METHODS)).isTrue();
    assertThat(response.getFirstHeader(
            HttpHeaders.ACCESS_CONTROL_ALLOW_METHODS).getValue())
            .isEqualTo("GET, PUT");
    assertThat(response.containsHeader(
            HttpHeaders.ACCESS_CONTROL_ALLOW_HEADERS)).isTrue();
    assertThat(response.getFirstHeader(
            HttpHeaders.ACCESS_CONTROL_ALLOW_HEADERS).getValue())
            .isEqualTo("Accept");

    // Allowed origin, method and header combination
    request.reset();
    request.setHeader(HttpHeaders.ORIGIN, "https://example.com");
    request.setHeader(HttpHeaders.ACCESS_CONTROL_REQUEST_METHOD, "GET");
    request.setHeader(HttpHeaders.ACCESS_CONTROL_REQUEST_HEADERS,
            "Accept, Content-Type");
    response = httpClient.execute(request);
    assertThat(response.getStatusLine().getStatusCode())
            .isEqualTo(HttpStatus.SC_OK);
    assertThat(response.containsHeader(
            HttpHeaders.ACCESS_CONTROL_ALLOW_ORIGIN)).isTrue();
    assertThat(response.getFirstHeader(
            HttpHeaders.ACCESS_CONTROL_ALLOW_ORIGIN).getValue())
            .isEqualTo("https://example.com");
    assertThat(response.containsHeader(
            HttpHeaders.ACCESS_CONTROL_ALLOW_METHODS)).isTrue();
    assertThat(response.getFirstHeader(
            HttpHeaders.ACCESS_CONTROL_ALLOW_METHODS).getValue())
            .isEqualTo("GET, PUT");
    assertThat(response.containsHeader(
            HttpHeaders.ACCESS_CONTROL_ALLOW_HEADERS)).isTrue();
    assertThat(response.getFirstHeader(
            HttpHeaders.ACCESS_CONTROL_ALLOW_HEADERS).getValue())
            .isEqualTo("Accept, Content-Type");
}
 
@Test
public void testCorsPreflightPublicRead() throws Exception {
    // No CORS headers
    HttpOptions request = new HttpOptions(publicGET);
    HttpResponse response = httpClient.execute(request);

    assertThat(response.getStatusLine().getStatusCode())
            .isEqualTo(HttpStatus.SC_BAD_REQUEST);

    // Not allowed method
    request.reset();
    request.setHeader(HttpHeaders.ORIGIN, "https://example.com");
    request.setHeader(HttpHeaders.ACCESS_CONTROL_REQUEST_METHOD, "PATCH");
    response = httpClient.execute(request);
    assertThat(response.getStatusLine().getStatusCode())
            .isEqualTo(HttpStatus.SC_BAD_REQUEST);

    // Allowed origin and method
    request.reset();
    request.setHeader(HttpHeaders.ORIGIN, "https://example.com");
    request.setHeader(HttpHeaders.ACCESS_CONTROL_REQUEST_METHOD, "GET");
    request.setHeader(HttpHeaders.ACCESS_CONTROL_REQUEST_HEADERS,
            "Accept, Content-Type");
    response = httpClient.execute(request);
    assertThat(response.getStatusLine().getStatusCode())
            .isEqualTo(HttpStatus.SC_OK);
    assertThat(response.containsHeader(
            HttpHeaders.ACCESS_CONTROL_ALLOW_ORIGIN)).isTrue();
    assertThat(response.getFirstHeader(
            HttpHeaders.ACCESS_CONTROL_ALLOW_ORIGIN).getValue())
            .isEqualTo("https://example.com");
    assertThat(response.containsHeader(
            HttpHeaders.ACCESS_CONTROL_ALLOW_METHODS)).isTrue();
    assertThat(response.getFirstHeader(
            HttpHeaders.ACCESS_CONTROL_ALLOW_METHODS).getValue())
            .isEqualTo("GET, PUT");
    assertThat(response.containsHeader(
            HttpHeaders.ACCESS_CONTROL_ALLOW_HEADERS)).isTrue();
    assertThat(response.getFirstHeader(
            HttpHeaders.ACCESS_CONTROL_ALLOW_HEADERS).getValue())
            .isEqualTo("Accept, Content-Type");
}