openvidu-call: Remove not needed headers

This commit is contained in:
cruizba 2022-09-24 02:31:56 +02:00
parent 6cc7ec0429
commit 7dbf5c3a6d
2 changed files with 19 additions and 11 deletions

View File

@ -1,7 +1,9 @@
package io.openvidu.call.java.services; package io.openvidu.call.java.services;
import java.io.IOException;
import java.net.URI; import java.net.URI;
import java.net.URISyntaxException; import java.net.URISyntaxException;
import java.util.Arrays;
import java.util.Enumeration; import java.util.Enumeration;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
@ -9,13 +11,8 @@ import javax.servlet.http.HttpServletResponse;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value; import org.springframework.beans.factory.annotation.Value;
import org.springframework.http.HttpEntity; import org.springframework.http.*;
import org.springframework.http.HttpHeaders; import org.springframework.http.client.*;
import org.springframework.http.HttpMethod;
import org.springframework.http.ResponseEntity;
import org.springframework.http.client.BufferingClientHttpRequestFactory;
import org.springframework.http.client.ClientHttpRequestFactory;
import org.springframework.http.client.SimpleClientHttpRequestFactory;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.web.client.HttpStatusCodeException; import org.springframework.web.client.HttpStatusCodeException;
import org.springframework.web.client.RestTemplate; import org.springframework.web.client.RestTemplate;
@ -26,7 +23,7 @@ public class ProxyService {
@Value("${OPENVIDU_URL}") @Value("${OPENVIDU_URL}")
public String OPENVIDU_URL; public String OPENVIDU_URL;
@Autowired @Autowired
private OpenViduService openviduService; private OpenViduService openviduService;
@ -36,7 +33,7 @@ public class ProxyService {
String requestUrl = request.getRequestURI(); String requestUrl = request.getRequestURI();
URI uri = UriComponentsBuilder.fromUriString(OPENVIDU_URL).path(requestUrl).query(request.getQueryString()).build(true).toUri(); URI uri = UriComponentsBuilder.fromUriString(OPENVIDU_URL).path(requestUrl).query(request.getQueryString()).build(true).toUri();
HttpHeaders headers = new HttpHeaders(); HttpHeaders headers = new HttpHeaders();
Enumeration<String> headerNames = request.getHeaderNames(); Enumeration<String> headerNames = request.getHeaderNames();
@ -44,14 +41,21 @@ public class ProxyService {
String headerName = headerNames.nextElement(); String headerName = headerNames.nextElement();
headers.set(headerName, request.getHeader(headerName)); headers.set(headerName, request.getHeader(headerName));
} }
headers.add("Authorization", this.openviduService.getBasicAuth());
headers.add("Authorization", this.openviduService.getBasicAuth());
headers.remove("Cookie");
headers.remove(HttpHeaders.ACCEPT_ENCODING); headers.remove(HttpHeaders.ACCEPT_ENCODING);
HttpEntity<String> httpEntity = new HttpEntity<>(null, headers); HttpEntity<String> httpEntity = new HttpEntity<>(null, headers);
ClientHttpRequestFactory factory = new BufferingClientHttpRequestFactory(new SimpleClientHttpRequestFactory()); ClientHttpRequestFactory factory = new BufferingClientHttpRequestFactory(new SimpleClientHttpRequestFactory());
RestTemplate restTemplate = new RestTemplate(factory); RestTemplate restTemplate = new RestTemplate(factory);
restTemplate.setInterceptors(Arrays.asList((requestIntercept, body, execution) -> {
ClientHttpResponse responseIntercept = execution.execute(requestIntercept, body);
responseIntercept.getHeaders().remove("set-cookie");
return responseIntercept;
}));
try { try {
return restTemplate.exchange(uri, HttpMethod.GET, httpEntity, byte[].class); return restTemplate.exchange(uri, HttpMethod.GET, httpEntity, byte[].class);

View File

@ -143,6 +143,7 @@ export const proxyGETRecording = createProxyMiddleware({
onProxyReq: (proxyReq, req: Request, res: Response) => { onProxyReq: (proxyReq, req: Request, res: Response) => {
const isAdminDashboard = openviduService.adminTokens.includes(req['session'].token); const isAdminDashboard = openviduService.adminTokens.includes(req['session'].token);
const sessionId = openviduService.getSessionIdFromCookie(req.cookies); const sessionId = openviduService.getSessionIdFromCookie(req.cookies);
proxyReq.removeHeader('Cookie');
if ((!!sessionId && openviduService.isValidToken(sessionId, req.cookies)) || isAdminDashboard) { if ((!!sessionId && openviduService.isValidToken(sessionId, req.cookies)) || isAdminDashboard) {
const recordingId: string = req.params.recordingId; const recordingId: string = req.params.recordingId;
if (!recordingId) { if (!recordingId) {
@ -155,6 +156,9 @@ export const proxyGETRecording = createProxyMiddleware({
return res.status(403).send(JSON.stringify({ message: 'Permissions denied to drive recording' })); return res.status(403).send(JSON.stringify({ message: 'Permissions denied to drive recording' }));
} }
}, },
onProxyRes: (proxyRes, req: Request, res: Response) => {
proxyRes.headers['set-cookie'] = null;
},
onError: (error, req: Request, res: Response) => { onError: (error, req: Request, res: Response) => {
console.log(error); console.log(error);
const code = Number(error?.message); const code = Number(error?.message);