RESTLET 2.1RC1:从 GWT 客户端发送到服务器的 ChallengeResponse 始终为 NULL

Posted

技术标签:

【中文标题】RESTLET 2.1RC1:从 GWT 客户端发送到服务器的 ChallengeResponse 始终为 NULL【英文标题】:RESTLET 2.1RC1 : ChallengeResponse send from GWT client to server always NULL 【发布时间】:2011-12-12 19:39:59 【问题描述】:

我有:

客户端上的 RESTLET GWT 2.1RC1 服务器上的 RESTLET J2EE 2.1RC1

我一直在努力解决这个问题,但无论我尝试什么:

    ClientResource r = new ClientResource("/service" + UsersServiceProxy.URL);
    r.setChallengeRespon​se(ChallengeScheme.H​TTP_BASIC, "user1", "secret");
    r.setOnResponse(new Uniform() 
        public void handle(Request request, Response response) 
           .....
        
    );
    r.get();

或者这个代码:

    UserServiceProxy userService = GWT.create(UserServiceProxy.class);
    userService.getClientResource().setReference(url);
    userService.getClientResource().setChallengeResponse(new ChallengeResponse(ChallengeScheme.HTTP_BASIC, "user1", "secret"));
    userService.getUser(username + ":" + password, new Result<User>() 

        @Override
        public void onFailure(Throwable caught) 
                ......
        

        @Override
        public void onSuccess(User user) 
            .....
        
    );

问题:

在服务器端没有收到 ChallengeResponse (==NULL)。使用 wireshark 调试显示没有通过网络发送“Authorization:”。

使用 Chrome 开发工具,我可以看到 XHR 请求被发送到:http://user1:secret@​127.0.1.1:8888/servi​ce/user

所以在这里,用户名/密码被传递给服务器,但不是作为身份验证标头? 我怎样才能访问这些服务器端?

我的设置不正确吗? 这是this bug的回归吗?

【问题讨论】:

对 Chrome 使用 CURL 或 @REST 控制台,我可以完美接收基本身份验证,IMO 排除了这可能是服务器端问题。 【参考方案1】:

在 Restlet GWT Edition 2.1RC1 中没有发送授权标头,我提交了一个至少修复了 BASIC auth 的补丁,所以我可以继续前进。

见http://restlet.tigris.org/issues/show_bug.cgi?id=1060

【讨论】:

【参考方案2】:

此错误已修复。请参阅下一个 2.1 RC2 和 2.0.11 版本。

请参阅此问题以获取有关修复的更新: http://restlet.tigris.org/issues/show_bug.cgi?id=1060

【讨论】:

我看到了同样的问题,现在使用相同的代码。 GWT2.2.0 和 Restlet 2.1.2 ... 我可能应该补充一点,我在服务器端看到了 OPTIONS 请求,即使执行了 GET 也是如此。是否与首先执行 OPTIONS 而restlet 不期望 401 相关? 更新:实际上,/my Restlet/GWT 设置有问题。即使Representation representation = new ClientResource( "http://localhost:2882/programs/" ).get();(没有在服务器上进行身份验证)也会返回“null”。但是restlet.jse 可以使用该代码。也许我需要降级...

以上是关于RESTLET 2.1RC1:从 GWT 客户端发送到服务器的 ChallengeResponse 始终为 NULL的主要内容,如果未能解决你的问题,请参考以下文章

Intellij 12、GWT 2.6.0-rc1 和超级开发模式

Camel Restlet异步发送对客户端的响应

Retrofit2 POST 方法获取代码 400 但适用于 Restlet 客户端

我如何在RESTlet中加载和编辑客户资料?

GWT 错误:必须运行 RequestFactory ValidationTool

Restlet 简介