Exécution d'un appel externe vers ThingWorx Flow
Utilisez l'une des méthodes suivantes pour effectuer un appel externe vers ThingWorx Flow :
Exécution d'un appel REST depuis un site Web externe vers ThingWorx Flow
Si un site Web tente d'effectuer un appel REST sur le serveur ThingWorx Flow, ce dernier bloque la requête, car il s'agit d'une requête cross-origin. Pour ce faire, le serveur ThingWorx Flow doit être configuré de façon à autoriser les requêtes cross-origin des sites Web. Ajoutez un filtre CORS (partage des ressources cross-origin) au serveur ThingWorx Flow pour autoriser les requêtes cross-origin. Les autres sites Web déployés sur un autre serveur pourront alors accéder aux données du serveur ThingWorx Flow.
Procédez comme suit pour autoriser un site Web à effectuer un appel REST de ThingWorx Flow :
1. Arrêtez toutes les instances de Nginx en cours d'exécution.
2. Ouvrez le fichier vhost-flow.conf à l'emplacement suivant de votre installation Nginx.
Windows : C:/Program Files/nginx-<version>/conf/conf.d
Linux : /etc/nginx/conf/conf.d
3. Dans le fichier vhost-flow.conf, sous la section location /Thingworx, localisez la ligne proxy_set_header X-Content-Type-Options nosniff;, puis ajoutez les lignes suivantes :
set $cors '';
# Right side of condition can be regular expression:
# if ($http_origin ~ '^https?://(localhost|www\.yourdomain\.com|www\.yourotherdomain\.com)')
if ($http_origin = '<Origine_appel_ThingWorx_Flow>') {
set $cors 'true';
}
if ($cors = 'true') {
add_header 'Access-Control-Allow-Origin' "$http_origin" always;
add_header 'Access-Control-Allow-Credentials' 'true' always;
}
# OPTIONS indicates a CORS pre-flight request
if ($request_method = 'OPTIONS') {
add_header 'Access-Control-Allow-Origin' '$http_origin';
add_header 'Access-Control-Allow-Credentials' 'true';
add_header 'Access-Control-Allow-Headers' 'Authorization,Accept,Origin,DNT,X-CustomHeader,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Content-Range,Range';
add_header 'Access-Control-Allow-Methods' 'GET,POST,OPTIONS,PUT,DELETE,PATCH';
add_header 'Access-Control-Max-Age' 1728000;
add_header 'Content-Type' 'text/plain charset=UTF-8';
add_header 'Content-Length' 0;
return 204;
}
4. Si vous avez installé ThingWorx Foundation et ThingWorx Flow sur des ordinateurs différents, procédez comme suit :
Recherchez la ligne suivante dans le fichier vhost-flow.conf :
# add_header Content-Security-Policy
Ajoutez les lignes suivantes sous la ligne ci-dessus :
add_header Content-Security-Policy "frame-ancestors 'self' <Origine_appel_ThingWorx_Flow>;";
Vous pouvez coder en dur le nom du domaine ou spécifier une expression régulière. Par exemple : add_header Content-Security-Policy "frame-ancestors 'self' https://*.ptcnet.ptc.com;";
5. Remplacez <Origine_appel_ThingWorx_Flow> par l'URL du site Web qui tente d'accéder à ThingWorx Flow.
6. Redémarrez le service Nginx.
Exécution d'un appel WebSocket vers ThingWorx Flow
Par défaut, vous pouvez effectuer des appels WebSocket sécurisés (wss) vers ThingWorx Flow.
Les appels WebSocket (ws) ne sont pas pris en charge.