Мой интерфейс GWT находится на порту 8888. Серверная часть REST — на 8080. По умолчанию файлы cookie не работают. Кажется, что файлы cookie должны быть переданы, если я вызову RequestBuilder.setIncludeCredentials() для запроса. В этом случае мне нужно заменить DefaultRequestBuilderFactory моей собственной реализацией, потому что мне нужно отправлять файлы cookie на сервер.
SecuredRequestBuilderFactory.java:
public class SecuredRequestBuilderFactory extends DefaultRequestBuilderFactory {
public SecuredRequestBuilderFactory(HttpRequestBuilderFactory httpRequestBuilderFactory, BodyFactory bodyFactory, HeaderFactory headerFactory, UriFactory uriFactory, @RequestTimeout Integer requestTimeoutMs) {
super(httpRequestBuilderFactory, bodyFactory, headerFactory, uriFactory, requestTimeoutMs);
}
@Override
public <A extends RestAction<?>> RequestBuilder build(A action, String securityToken) throws ActionException {
RequestBuilder builder = super.build(action, securityToken);
builder.setIncludeCredentials(true);
return builder;
}
}
Я добавил в свой gwt.xml:
<replace-with class="com.example.rest.SecuredRequestBuilderFactory">
<any>
<when-type-is class="com.gwtplatform.dispatch.rest.client.core.RequestBuilderFactory"/>
<when-type-is class="com.gwtplatform.dispatch.rest.client.core.DefaultRequestBuilderFactory"/>
</any>
</replace-with>
Я обнаружил из отладчика (Chrome с плагином IDEA), что для класса SecuredRequestBuilderFactory нет сопоставления, и учетные данные не были включены.
Итак, есть идеи, как заставить его работать?