1 minute read

En este artículo explicaré cómo configurar LSCS (LiveSite Content Services) para permitir solicitudes de servidores, que no sean él mismo, según la política de seguridad de same-origin. Las solicitudes entre sitios están prohibidas por defecto, ya que pueden generar muchos problemas de cross-site scripting.

La cabecera Access-Control-Allow-Origin indica si la respuesta se puede compartir con el código de solicitud del origen dado.

Cuando CORS está configurado correctamente en el servidor, el encabezado de respuesta del servidor incluirá origenes aceptados. Por ejemplo, añadimos la cabecera Access-Control-Allow-Origin: https://teamsite-lsds.joaquinonsoft.com para informar al navegador (cliente) que es correcto mostrar resultados de este sitio y no generar errores.

Imaginemos que tenemos LSDS ejecutándose en https://teamsite-lsds.joaquinonsoft.com y LSCS en https://teamsite-lscs.joaquinonsoft.com. A partir de las URL, podemos ver que ambos se ejecutan en el mismo dominio pero con diferentes subdominios. Si no configuramos CORS para permitir el origen cruzado, tendremos errores como el que se muestra a continuación cuando LSDS envía una solicitud a LSCS.

no access control allow horigin header is present

En un TeamSite containerizado debemos seguir los siguietes pasos para habilitar CORS:

  • Editar el fichero /home/otadmin/helm_charts/teamsite/bundle/configfiles/lscsrt/Interwoven/LiveSiteCSRT/runtime/webapps/lscs/WEB-INF/web.xml
  • Agregar el siguiente código a nuestro fichero web.xml
<!-- ================== CORS Filter Definitions ===================== -->
<filter>
	<filter-name>CorsFilter</filter-name>
	<filter-class>org.apache.catalina.filters.CorsFilter</filter-class>
	<init-param>
		<param-name>cors.allowed.origins</param-name>
		<param-value>https://teamsite-lsds.joaquinonsoft.com</param-value>
	</init-param>
	<init-param>
		<param-name>cors.allowed.methods</param-name>
		<param-value>GET,POST,HEAD,OPTIONS,PUT</param-value>
	</init-param>
	<init-param>
		<param-name>cors.exposed.headers</param-name>
		<param-value>Access-Control-Allow-Origin,Access-Control-Allow-Methods</param-value>
	</init-param>
</filter>
<!-- ==================== CORS Filter Mappings ====================== -->
<filter-mapping>
	<filter-name>CorsFilter</filter-name>
	<url-pattern>/*</url-pattern>
</filter-mapping>
  • Guardar el fichero web.xml
  • Abrir una terminal y ejecutar los siguientes comandos
     cd /home/otadmin/Desktop/customization
     ./customizehostname.sh <vmname> 
    

Podemos validar que el fichero de configuración se ha propagado al pod adecuado de Kubernets ejecutando este comando en una terminal:

kubectl exec -n runtime lscs-0 – cat /Interwoven/LiveSiteCSRT/runtime/webapps/lscs/WEB-INF/web.xml