В IQChannels есть публичное API, специально созданное для виджетов и мобильных приложений. Обеспечение его безопасности делается с помощью настроек CORS. CORS позволяет жестко ограничить домены, с которых браузеры могут обращаться к публичному API.

По умолчанию IQChannels разрешает доступ со всех доменов.

Пример заголовков CORS, которые возвращает IQChannels:

Access-Control-Allow-Credentials: true
Access-Control-Allow-Headers: Accept, Accept-Encoding, Accept-Language, Access-Control-Request-Headers, Access-Control-Request-Method, Authorization, Cache-Control, Connection, Content-Type, Cookie, Host, Origin, Pragma, Referer, X-Requested-With, User-Agent
Access-Control-Allow-Methods: GET, HEAD, POST, OPTIONS
Access-Control-Allow-Origin: *

Настройка

Настройка доменов делает в файле конфигурации сервера config.yaml. Для этого требуется перечислить все разрешенные домены в разделе httpd1 в ключе cors_origin. Поддомены поддерживаются автоматически.

httpd1:
#  listen: ":3001"                 # Public API host:port.
#  listen_tls: ":4001"             # Public TLS API.
#  enable_tls: false               # Enables TLS API, requires certificate and key.
#  certificate: "config/cert.pem"  # Path to a certificate in PEM format with CA certs (as in Nginx).
#  key: "config/key.pem"           # Path to a private key in PEM format (as in Nginx).
  cors_origin: ""                 # Allowed CORS domains, for example: "localhost, mycompany.ru". An empty string means all are allowed.