Java HttpClient警告:Cookie被拒绝:非法的域属性

Java HttpClient警告:Cookie被拒绝:非法的域属性,java,cookies,warnings,httpclient,Java,Cookies,Warnings,Httpclient,我使用的是HttpClient的最新版本(4.x)。现在我正试着做一个GET请求。 我刚刚发布了一个Get请求 这是我的密码 public class Poster { static boolean routing1 = true, routing2 = true; static int counter1 = 0, counter2 = 0; DefaultHttpClient oHtp = null; HttpGet oHGet = null; Htt

我使用的是HttpClient的最新版本(4.x)。现在我正试着做一个GET请求。 我刚刚发布了一个Get请求

这是我的密码

public class Poster {

    static boolean routing1 = true, routing2 = true;
    static int counter1 = 0, counter2 = 0;
    DefaultHttpClient oHtp = null;
    HttpGet oHGet = null;
    HttpResponse oHRes = null;


    private void test(String fullAddress) throws Exception {
        oHtp = new DefaultHttpClient();
        oHGet = new HttpGet(fullAddress);

        HttpResponse response = oHtp.execute(oHGet);
        System.out.print(response.getStatusLine());

        HttpEntity entity = response.getEntity();
        if (entity != null) {
            entity = new BufferedHttpEntity(entity);
            //  System.out.println(EntityUtils.toString(entity));
            System.out.print("\t entity is retrieved... ");
        }


        oHtp.getConnectionManager().shutdown();
    }
}
我只是很好地执行它。 首先是

new Poster().test("http://123.xl.co.id/profile.php");
其次是

 new Poster().test("http://goklik.co.id/");
是的,只有第二个。。。。我从错误消息中得到了这个消息

2011年9月18日上午10:11:30 org.apache.http.client.protocol.ResponseProcessCookies processCookies 警告:Cookie被拒绝:“[版本:0][名称:CookiePst][值: 0149=xwghf7hydhq84isp/eSy9vu+Xq6cT12wxg1A==][域: .mcore.com][path://][有效期:2011年9月18日星期日10:38:59]。非法的 域属性“mcore.com”。原产地:“goklik.co.id”

我意识到这里牵涉到饼干。但我不明白这个警告是什么意思。我也不知道如何解决这个问题(Cookie没有被拒绝)。希望有一点阳光能让我从你们身上清醒过来你不能“修复”它。该站点正在尝试设置一个不允许设置的cookie,而您正在使用的apache客户端库正在告诉您这一点


当域为
goklik.co.id
时,它试图为
mcore.com
设置cookie,可能为时已晚,但我也遇到了同样的问题,我发现了一些帮助我解决问题的方法,只需将浏览器设置为Compability:

httpclient.getParams().setParameter(ClientPNames.COOKIE_POLICY,
        CookiePolicy.BROWSER_COMPATIBILITY);
以下是可能的值:

cookie策略提供相应的cookie管理 对于给定类型或版本的cookie

默认情况下使用RFC 2109规范。其他支持 可以在适当时选择规格,也可以在适当时设置默认规格 渴望的

提供以下规格:

  • BROWSER\u兼容性
    :与常见的cookie管理实践兼容(即使它们不是100%符合标准)
  • NETSCAPE
    :符合NETSCAPE cookie草稿
  • RFC_2109
    :符合RFC2109(默认)
  • 忽略COOKIES
    :不要自动处理COOKIES

httpclient
4.3之前,在同一页面中是很酷的

但是由于
httpclient
4.3,API似乎改变了很多,下面的代码可以工作:

RequestConfig customizedRequestConfig = RequestConfig.custom().setCookieSpec(CookieSpecs.BROWSER_COMPATIBILITY).build();
HttpClientBuilder customizedClientBuilder = HttpClients.custom().setDefaultRequestConfig(customizedRequestConfig);
CloseableHttpClient client = customizedClientBuilder.build(); // customized client,

我使用的是http客户端4.5.2,这是一个cookie规范,可以轻松解决我的问题。如何实例化客户端的示例:

httpClient = HttpClients.custom()
                .setDefaultRequestConfig(RequestConfig.custom()
                        // Waiting for a connection from connection manager
                        .setConnectionRequestTimeout(10000)
                        // Waiting for connection to establish
                        .setConnectTimeout(5000)
                        .setExpectContinueEnabled(false)
                        // Waiting for data
                        .setSocketTimeout(5000)
                        .setCookieSpec("easy")
                        .build())
                .setMaxConnPerRoute(20)
                .setMaxConnTotal(100)
                .build();

我只是想改进Eric的答案,因为它并不能直接解决我的问题,但是改变CookieSpecs来忽略COOKIES解决了我的问题

RequestConfig customizedRequestConfig = RequestConfig.custom().setCookieSpec(CookieSpecs.IGNORE_COOKIES).build();
HttpClientBuilder customizedClientBuilder = 
HttpClients.custom().setDefaultRequestConfig(customizedRequestConfig);
CloseableHttpClient client = customizedClientBuilder.build(); // customized client,

因为在我的HttpClient 4.5 CookieSpecs.BROWSER版本中,兼容性已经降低了。

以下是抑制v4.5.x中警告的最简单方法(4.5.6现在):


如果您不需要处理cookie,只需使用
org.apache.http.impl.cookie.IgnoreSpecProvider
org.apache.http.impl.cookie.IgnoreSpec
禁用它,具体取决于您使用的API。在
HttpClientBuilder
上调用
disableCookieManagement()
是不够的

hah??你确定吗??天啊。我想,从客户端(我这边)开始,我应该在发出另一个GET请求(传递cookie)之前重新创建我的cookie,该请求使用mcore.com而不是所需的goklik.co.id:(您使用的客户端符合适当的标准。查看
org.apache.http.client
的JavaDocs,我看不到覆盖该请求的方法(可用的org.apache.http.client.params.CookiePolicy选项都符合标准)。我遇到了相同的问题,但我向同一个站点发送了请求。你说“该站点正在尝试设置一个不允许设置的cookie”是什么意思?这是为什么?在我的情况下(同一个站点),我真的没有办法解决这个问题吗?我也有同样的问题,但因为我对Cookie不感兴趣,所以我设置了CookiePolicy.IGNORE_Cookie,这为我做到了(与浏览器_兼容,我一直收到消息).这条消息意味着什么?CookiePolicy.BROWSER_兼容性意味着什么?Jonathan Silva的回答-用户可能已经更改了他们的名字(我想是Jon Cardoso),因此链接可能比通过name@törzsmókus谢谢,我已经按照建议更新了答案。
HttpClientBuilder clientBuilder = HttpClientBuilder.create();
clientBuilder.disableCookieManagement();
HttpClient httpClient = clientBuilder.build();