|
|
CORS está directamente relacionado con HTTP porque utiliza cabeceras HTTP para determinar si una solicitud de origen cruzado es segura y está permitida. Para obtener más información, consulte el manual para desarrolladores HTTP.
|
<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>[ALLOWED_ORIGINS]</param-value>
</init-param>
<init-param>
<param-name>cors.allowed.methods</param-name>
<param-value>OPTIONS,GET,POST,HEAD,PUT,DELETE</param-value>
</init-param>
<init-param>
<param-name>cors.allowed.headers</param-name>
<param-value>Authorization,appKey,x-thingworx-session,Content-Type,X-Requested-With,Origin,Access-Control-Request-Method,Access-Control-Request-Headers,Accept</param-value>
</init-param>
<init-param>
<param-name>cors.exposed.headers</param-name>
<param-value>Access-Control-Allow-Origin,Access-Control-Allow-Credentials</param-value>
</init-param>
<init-param>
<param-name>cors.support.credentials</param-name>
<param-value>false</param-value>
</init-param>
<init-param>
<param-name>cors.preflight.maxage</param-name>
<param-value>10</param-value>
</init-param>
<init-param>
<param-name>cors.request.decorate</param-name>
<param-value>true</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>CorsFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
|
|
Se debe tener en cuenta lo siguiente:
• Actualice el parámetro cors.allowed.origins con las direcciones web deseadas.
• Se pueden especificar múltiples orígenes permitidos mediante un delimitador de comas. Por ejemplo, https://origin1.com, https://origin2.com.
• * se puede utilizar exclusivamente para permitir solicitudes de todos los orígenes. * solo se puede usar por sí solo para permitir todos los orígenes. * no se puede utilizar como parte de un URI.
• Para los entornos que utilizan el inicio de sesión único (SSO) con PingFederate, asegúrese de que el FQDN del servidor en tiempo de ejecución de PingFederate se añada como origen permitido.
◦ http://<FQDN de Ping Federate>:9301 http://<Ping Federate FQDN>:9031
• Añada o quite las cabeceras personalizadas del parámetro cors.allowed.headers según sea necesario.
• Defina cors.support.credentials en verdadero para permitir la autenticación básica.
|
<!-- <security-constraint>
<web-resource-collection>
<web-resource-name>Forbidden</web-resource-name>
<url-pattern>/*</url-pattern>
<http-method>OPTIONS</http-method>
</web-resource-collection>
<auth-constraint/>
</security-constraint> -->
<script>
var xhr = new XMLHttpRequest();
xhr.open("GET", "https://[THINGWORX_HOST]:[PORT]/Thingworx/Things", true);
xhr.setRequestHeader("appKey", "<APPLICATION_KEY>");
xhr.setRequestHeader("accept", "application/json");
xhr.send();
</script>
|
|
<APPLCATION_KEY> se debe reemplazar por una clave de aplicación activa no vencida de ThingWorx Platform.
|
<script>
var xhr = new XMLHttpRequest();
xhr.open("GET", "https://[THINGWORX_HOST]:[PORT]/Thingworx/Things", true);
xhr.setRequestHeader("Authorization", "Basic <USER_PASSWORD>");
xhr.setRequestHeader("accept", "application/json");
xhr.send();
</script>
|
|
<USER_PASSWORD> debe estar codificado en Base64 con dos puntos que separen el nombre de usuario y la contraseña. Por ejemplo, el nombre de usuario Administrator con la contraseña ptc123 se introduciría en un codificador Base64 como Administrator:ptc123, lo que daría como resultado un valor de QWRtaW5pc3RyYXRvcjpwdGMxMjM=. Este método se utiliza solo con fines de prueba, ya que Base64 se puede decodificar para obtener el valor de nombre de usuario y contraseña en texto sin formato.
|