|
|
Le service CORS est directement lié au protocole HTTP, car il utilise des en-têtes HTTP pour déterminer si une requête partagée entre origines multiples est sûre et autorisée. Pour plus d'informations, consultez le manuel anglais HTTP Developer Guide (Guide du développeur 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>
|
|
Prenez en considération les points suivants :
• Mettez à jour le paramètre cors.allowed.origins avec la ou les adresses Web souhaitées.
• Plusieurs origines autorisées peuvent être spécifiées en les séparant par une virgule. Par exemple, https://origin1.com, https://origin2.com.
• * peut exclusivement être utilisé pour autoriser les requêtes provenant de toutes les origines. * ne peut être utilisé seul que pour autoriser toutes les origines. * ne peut pas être utilisé comme partie d'un URI.
• Pour les environnements qui utilisent l'authentification unique (SSO) avec PingFederate, assurez-vous que le nom de domaine complet (FQDN) du serveur d'exécution PingFederate est ajouté en tant qu'origine autorisée.
◦ http://<FQDN Ping Federate> :9301 http://<Ping Federate FQDN>:9031
• Pour le paramètre cors.allowed.headers, ajoutez ou supprimez tout en-tête personnalisé, comme il convient.
• Définissez cors.support.credentials sur "vrai" pour autoriser l'authentification de base.
|
<!-- <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> doit être remplacée par une clé d'application active non expirée 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> doit être codé en Base64 avec un signe deux-points séparant le nom d'utilisateur et le mot de passe. Par exemple, le nom d'utilisateur Administrateur avec le mot de passe ptc123 serait entré dans un encodeur Base64 sous la forme Administrator :ptc123, ce qui donnerait une valeur de QWRtaW5pc3RyYXRvcjpwdGMxMjM=. Cette méthode est utilisée à des fins de test uniquement, car Base64 peut être décodé pour obtenir la valeur du nom d'utilisateur et du mot de passe en texte brut.
|