}
@Override
- public void setHeader(String keys, String value) {
- response.setHeader(keys, value);
+ public void setHeader(String headerName, String value) {
+ response.setHeader(headerName, value);
+ }
+
+ @Override
+ public void addHeader(String headerName, String value) {
+ response.addHeader(headerName, value);
}
}
package org.argeo.cms.websocket.server;
+import java.util.ArrayList;
import java.util.Collections;
+import java.util.List;
import javax.websocket.HandshakeResponse;
}
@Override
- public void setHeader(String key, String value) {
- handshakeResponse.getHeaders().put(key, Collections.singletonList(value));
+ public void setHeader(String headerName, String value) {
+ handshakeResponse.getHeaders().put(headerName, Collections.singletonList(value));
+ }
+ @Override
+ public void addHeader(String headerName, String value) {
+ List<String> values = handshakeResponse.getHeaders().getOrDefault(headerName, new ArrayList<>());
+ values.add(value);
}
}
/** Transitional interface to decouple from the Servlet API. */
public interface RemoteAuthResponse {
- void setHeader(String keys, String value);
+ /** Set this header to a single value, possibly removing previous values. */
+ void setHeader(String headerName, String value);
+ /** Add a value to this header. */
+ void addHeader(String headerName, String value);
}
// response.setHeader(HttpUtils.HEADER_WWW_AUTHENTICATE, "basic
// realm=\"" + httpAuthRealm + "\"");
- if (hasAcceptorCredentials() && !forceBasic && !negotiateFailed)// SPNEGO
- remoteAuthResponse.setHeader(HttpHeader.WWW_AUTHENTICATE.getHeaderName(), HttpHeader.NEGOTIATE);
- else
+ if (hasAcceptorCredentials() && !forceBasic && !negotiateFailed) {// SPNEGO
+ remoteAuthResponse.addHeader(HttpHeader.WWW_AUTHENTICATE.getHeaderName(), HttpHeader.NEGOTIATE);
+ // TODO make it configurable ?
+ remoteAuthResponse.addHeader(HttpHeader.WWW_AUTHENTICATE.getHeaderName(),
+ HttpHeader.BASIC + " " + HttpHeader.REALM + "=\"" + realm + "\"");
+ } else {
remoteAuthResponse.setHeader(HttpHeader.WWW_AUTHENTICATE.getHeaderName(),
HttpHeader.BASIC + " " + HttpHeader.REALM + "=\"" + realm + "\"");
+ }
// response.setDateHeader("Date", System.currentTimeMillis());
// response.setDateHeader("Expires", System.currentTimeMillis() + (24 *
package org.argeo.cms.internal.http;
+import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Locale;
}
@Override
- public void setHeader(String keys, String value) {
- httpExchange.getResponseHeaders().put(keys, Collections.singletonList(value));
+ public void setHeader(String headerName, String value) {
+ httpExchange.getResponseHeaders().put(headerName, Collections.singletonList(value));
+ }
+
+ @Override
+ public void addHeader(String headerName, String value) {
+ List<String> values = httpExchange.getResponseHeaders().getOrDefault(headerName, new ArrayList<>());
+ values.add(value);
}
@Override