Setting degli indirizzi con .NET8
Con l'update a .net 8 e in seguito a policy più restrittive dei browser riguardanti il CORS si è optato per impostare una reverse proxy da Apache. Tutte le configurazioni sono presenti nella root folder, verrà richiesto solamente di controllare che i dati siano stati completati correttamente.
Cosa cambia in database nella tabella net_task
Tutti i servizi verranno ora lanciati specificando il localhost, quindi, tutti i campi ta_uri a meno di condizioni speciali dovranno avere il valore 127.0.0.1, questo per bloccare tutte le altre chiamate che non passeranno poi per Apache.

Cosa cambia in Apache
In C:\PROROB\config\httpd\httpd.conf verrà aggiunto un import ad un altro file di configurazione reverse_proxy.conf.
Include "..\..\config\httpd\reverse_proxy.conf"
Questo file conterrà il routing di tutte le porte verso i vari servizi ed avrà la seguente sintassi:
Include "..\..\config\httpd\machine_ip.conf"
# Proxy to every services
# Here put the route to every services and the port
# At the end put the local ip of your machine
ProxyPass /net http://localhost:9001/net
ProxyPassReverse /net http://localhost:9001/net
ProxyPass /mes http://localhost:9002/mes
ProxyPassReverse /mes http://localhost:9002/mes
ProxyPass /anyerp http://localhost:9002/anyerp
ProxyPassReverse /anyerp http://localhost:9002/anyerp
ProxyPass /maintenance http://localhost:9002/maintenance
ProxyPassReverse /maintenance http://localhost:9002/maintenance
ProxyPass /scada http://localhost:9003/scada
ProxyPassReverse /scada http://localhost:9003/scada
ProxyPass /filemanager http://localhost:9003/filemanager
ProxyPassReverse /filemanager http://localhost:9003/filemanager
ProxyPass /wms http://localhost:9004/wms
ProxyPassReverse /wms http://localhost:9004/wms
ProxyPass /cmms http://localhost:9005/cmms
ProxyPassReverse /cmms http://localhost:9005/cmms
ProxyPass /ai http://localhost:9006/ai
ProxyPassReverse /ai http://localhost:9006/ai
ProxyPass /hrm http://localhost:9007/hrm
ProxyPassReverse /hrm http://localhost:9007/hrm
ProxyPass /scheduler http://localhost:9008/scheduler
ProxyPassReverse /scheduler http://localhost:9008/scheduler
ProxyPass /bi http://localhost:9009/bi
ProxyPassReverse /bi http://localhost:9009/bi
ProxyPass /tracking http://localhost:9010/tracking
ProxyPassReverse /tracking http://localhost:9010/tracking
# Here set the local ip of the machine
Header add Access-Control-Allow-Origin "http://${MACHINEIP}"
Header add Access-Control-Allow-Headers "access-control-allow-origin,authorization,content-type,domain"
Header add Access-Control-Allow-Methods "PUT, GET, POST, DELETE, OPTIONS"
A sua volta questo file importerà L'INDIRIZZO IP LOCALE segnato in C:\PROROB\config\httpd\machine_ip.conf.
L'indirizzo può essere riportato manualmente come nell'esempio:
Define MACHINEIP "172.16.10.138"
O per mezzo dello script powershell C:\PROROB\scripts\02_set_httpd_ip.ps1, il quale automaticamente rileverà l'indirizzo locale della macchina e lo segnerà nel file testuale.
ATTENZIONE
In caso la macchina abbia più di una scheda di rete attiva è possibile che lo script fallisca, inserendo due indirizzi locali, verificare il corretto funzionamento quindi.
Cosa cambia in server_settings.json
Avendo ora un routing automatico verso i servizi non è più necessario specificare le varie porte in ProWeb\@server\server_setting.json che verrà quindi semplificato così:
{
"TestMode": false,
"TestUri": "@server/test",
"Net": "http://172.16.10.138",
"Mes": "http://172.16.10.138",
"Scada": "http://172.16.10.138",
"Wms": "http://172.16.10.138",
"Cmms": "http://172.16.10.138",
"Ai": "http://172.16.10.138",
"Hrm": "http://172.16.10.138",
"Scheduler": "http://172.16.10.138",
"Mom": "http://172.16.10.138",
"Bi": "http://172.16.10.138",
"Tracking": "http://172.16.10.138"
}
Viene fornito anche qui uno script powershell che si occupa di riempire autonomamente questi dati, in questo caso lo troviamo nella stessa cartella in ProWeb\@server\set_task_ip.ps1
Importante assicurarsi che l'indirizzo segnato in questo file e l'indirizzo riportato in C:\PROROB\config\httpd\machine_ip.conf coincidano per risolvere il CORS
Eventuale Https
Per utilizzare il protocollo HTTPS per le chiamate è semplicemente necessario sostituire:
- http con https in
ProWeb\@server\server_setting.json - Nelle impostazioni di proxy per Apace va impostato di usare https con
Header add Access-Control-Allow-Origin "https://${MACHINEIP}"
Debugging e info utili
Apache si occupa di fare il re-indirizzamento degli indirizzi partendo dall'alto al basso rispetto all'ordine in cui sono inseriti nel file reverse_proxy.conf:
ProxyPass /filemanager http://localhost:9002/filemanager
ProxyPassReverse /filemanager http://localhost:9002/filemanager
ProxyPass /filemanager/scada http://localhost:9002/filemanager/scada
ProxyPassReverse /filemanager/scada http://localhost:9002/filemanager/scada
Reindirizzerà una chiamata /filemanager/scada alla porta 9002 appunto, dando priorità a quello segnato più in alto.