Создание внешнего вызова ThingWorx Flow
Используйте один из следующих методов для создания внешнего вызова ThingWorx Flow:
Выполнение вызова REST с внешнего веб-сайта в ThingWorx Flow
Если веб-сайт пытается выполнить вызов REST на сервере ThingWorx Flow, сервер блокирует запрос, поскольку это запрос с несколькими источниками. Чтобы это можно было сделать, сервер ThingWorx Flow должен быть настроен так, чтобы разрешить запросы с несколькими источниками с веб-сайтов. Добавьте фильтр CORS (совместное использование ресурсов с несколькими источниками) на сервер ThingWorx Flow, чтобы разрешить запросы с несколькими источниками. Другие веб-сайты, развернутые на другом сервере, могут затем получать доступ к данным с сервера ThingWorx Flow.
Выполните следующие шаги, чтобы разрешить веб-сайту выполнить вызов REST в ThingWorx Flow:
1. Закройте все выполняемые экземпляры Nginx.
2. Откройте файл vhost-flow.conf в следующем расположении в вашей установке Nginx.
▪ Windows: C:/Program Files/nginx-<версия>/conf/conf.d
▪ Linux: /etc/nginx/conf/conf.d
3. В файле vhost-flow.conf в разделе location /Thingworx найдите строку proxy_set_header X-Content-Type-Options nosniff; и добавьте следующие строки:
set $cors '';
# Right side of condition can be regular expression:
# if ($http_origin ~ '^https?://(localhost|www\.yourdomain\.com|www\.yourotherdomain\.com)')
if ($http_origin = '<Источник_вызова_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. Если ThingWorx Foundation и ThingWorx Flow установлены на разных компьютерах, выполните следующие действия.
▪ Найдите следующую строку в файле vhost-flow.conf:
# add_header Content-Security-Policy
▪ Добавьте следующие строки под приведенной выше строкой:
add_header Content-Security-Policy "frame-ancestors 'self' <Источник_вызова_ThingWorx Flow>;";
Можно жестко задать имя домена или указать регулярное выражение. Например: add_header Content-Security-Policy "frame-ancestors 'self' https://*.ptcnet.ptc.com;";
5. Замените <источник_вызывающий_ThingWorx_Flow> на URL-адрес веб-сайта, который пытается получить доступ к ThingWorx Flow.
6. Перезапустите сервис Nginx.
Выполнение вызова WebSocket для ThingWorx Flow
По умолчанию можно выполнять безопасные вызовы WebSocket (WSS) ThingWorx Flow.
Вызовы WebSocket (ws) не поддерживаются.