【问题标题】:Prevent ClosableHttpClient from sending cookies阻止 CloseableHttpClient 发送 cookie
【发布时间】:2018-01-05 06:26:54
【问题描述】:

我正在尝试用 Java 为 Shopify API 编写一个私有应用程序。我正在使用 org.apache.http 库来编写我的请求。以下是我目前的要求:

    CloseableHttpClient httpClient = HttpClientBuilder.create().setDefaultRequestConfig(RequestConfig.custom().setCookieSpec(CookieSpecs.STANDARD).build()).build();
    HttpPut putRequest = new HttpPut(request);
    StringEntity params;

    try {
        params = new StringEntity(json);
        putRequest.addHeader("X-Shopify-Access-Token", Constants.getShopifySharedSecret());
        putRequest.setEntity(params);

        CloseableHttpResponse response = httpClient.execute(putRequest);
        HttpEntity entity = response.getEntity();

        System.out.println("Title Change Request Output: ");
        System.out.println(EntityUtils.toString(entity));

        response.close();
        httpClient.close();
    } catch (ClientProtocolException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    }

    return;

这将返回一个要求登录的 HTML 页面。在搜索 Shopify 论坛后,似乎在向 Shopify 发出 POST 或 PUT 请求时,您不允许发送任何 cookie,否则会返回登录页面。所以我的问题是,有什么办法可以确保 CloseableHttpClient 不会发送任何 cookie?

【问题讨论】:

    标签: java cookies http-headers shopify apache-httpclient-4.x


    【解决方案1】:

    您可以将自定义 Cookie 存储绑定到本地 HTTP 上下文并在请求中发送

     CloseableHttpClient httpclient = HttpClients.createDefault();
    
            // Create a local instance of cookie store
            CookieStore cookieStore = new BasicCookieStore();
    
            // Create local HTTP context
            HttpClientContext localContext = HttpClientContext.create();
            // Bind custom cookie store to the local context
            localContext.setCookieStore(cookieStore);
    
            //Your PUT request goes here
            CloseableHttpResponse response = httpClient.execute(putRequest,localContext);
    

    【讨论】:

      【解决方案2】:

      阻止 HttpClient 向目标主机发送 cookie 的一种方法是禁用烹饪管理

      CloseableHttpClient client = HttpClientBuilder.create()
              .disableCookieManagement()
              .build();
      

      【讨论】:

        猜你喜欢
        • 2022-01-21
        • 1970-01-01
        • 1970-01-01
        • 2017-12-01
        • 2023-01-16
        • 2021-12-01
        • 1970-01-01
        • 2020-12-09
        • 2020-12-16
        相关资源
        最近更新 更多