ho visto sul forum che molti come me hanno problemi CORS. Ho chiesto a chatGPT:
proxy.php
<?php
// Disabilita l'output dei warning PHP
error_reporting(0);
// URL dell'API che vuoi contattare
$targetUrl = 'https://miosito/Comune';
// Parametri passati in GET (es: ?Username=user1)
$queryString = http_build_query($_GET);
// Componi l'URL completo
$url = $targetUrl . '?' . $queryString;
// Imposta l'header di risposta in JSON
header('Content-Type: application/json');
// Consenti chiamate CORS dal tuo dominio
header('Access-Control-Allow-Origin: *');
// Inoltra la richiesta
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
// Se serve autenticazione aggiungila qui:
// curl_setopt($ch, CURLOPT_HTTPHEADER, [
// "Authorization: Basic xxx"
// ]);
$response = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
// Passa il codice HTTP corretto in uscita
http_response_code($httpCode);
// Restituisci il contenuto ricevuto
echo $response;
Come usarlo
- Salvalo come
proxy.php nel tuo sito:
https://www.giopoi.it/gestausiljs/proxy.php
(qui parla di javascript, ma lo si può usare da qualsiasi linguaggio)
2. Dal tuo JavaScript, al posto di:
js
fetch('https://miosito/Comune?Username=user1')
usa:
js
fetch('proxy.php?Username=user1')
Se hai più endpoint?
Puoi estendere il proxy con un parametro url, ma attenzione a non esporre rischi di abuso. Se vuoi posso aiutarti a creare una versione più sicura e flessibile (con whitelist di URL ammessi, log, ecc.).
Fammi sapere se ti serve anche il supporto a POST, PUT, DELETE, o autenticazione con token, che si può fare in pochi minuti 
In ogni caso chiedete direttamente a chatGPT
NOTE
- Io non l’ho ancora provato.
- Se non volete abilitare PHP sul vs server chiede di usare c# o altro.
1 Mi Piace
@poidomani47 interessante come soluzione, ChatGPT su queste cose se la cava bene, ma non è forse più corretto modificare il proprio server web per includere gli indirizzi CORS che la tua web app utilizza?
sì ma tutti i post sul forum che trattano questo problema non hanno mai fornito la soluzione e sono tutti bloccati, o sbaglio? 
Io ho fatto una semplice domanda alla nostra amichevole intelligenza artificiale di quartiere (
) il ChatGPT e queste le sue risposte per IIS:
Questo è il metodo più usato e non richiede modifiche al codice.
Esempio base web.config:
xml
CopiaModifica
<configuration>
<system.webServer>
<httpProtocol>
<customHeaders>
<!-- Consenti richieste da qualsiasi origine -->
<add name="Access-Control-Allow-Origin" value="*" />
<add name="Access-Control-Allow-Methods" value="GET, POST, PUT, DELETE, OPTIONS" />
<add name="Access-Control-Allow-Headers" value="Content-Type, Authorization" />
</customHeaders>
</httpProtocol>
</system.webServer>
</configuration>
Se vuoi limitare solo a un dominio specifico:
xml
CopiaModifica
<add name="Access-Control-Allow-Origin" value="https://www.miosito.it" />
Importante: supporto alle richieste OPTIONS
- Le richieste CORS usano spesso il metodo OPTIONS per il preflight.
- IIS potrebbe bloccarle se non abilitate correttamente.
Soluzione:
- Permetti il metodo OPTIONS in
web.config:
xml
CopiaModifica
<system.webServer>
<handlers>
<add name="OPTIONSVerbHandler" path="*" verb="OPTIONS" modules="IsapiModule" resourceType="Unspecified" requireAccess="Script" />
</handlers>
</system.webServer>
Metodo 2: Uso del modulo IIS CORS (solo Windows Server 2019+)
IIS 10 (su Windows Server 2019 o 2022) ha un modulo ufficiale CORS.
Passaggi:
- Apri Server Manager → Aggiungi Ruoli e funzionalità
- Vai su Server Web (IIS) → Web Server → Performance
- Attiva la feature CORS Module
Poi, nel web.config puoi usare:
xml
CopiaModifica
<system.webServer>
<cors enabled="true">
<add origin="https://www.miosito.it" />
</cors>
</system.webServer>
Metodo 3: Aggiunta manuale nei response headers da IIS Manager
- Apri IIS Manager
- Seleziona il tuo sito → doppio clic su HTTP Response Headers
- Aggiungi:
- Nome:
Access-Control-Allow-Origin
- Valore:
* o il dominio che vuoi autorizzare
Questo metodo è semplice ma meno flessibile e non gestisce correttamente i preflight OPTIONS.
Tralascio la modalità da programmazione che mi ha passato del codice C#.
In ogni caso @poidomani47 grazie sempre dei tuoi contributi sull’intelligenza artificiale.
2 Mi Piace
Ah ecco!!! Io di solito non metto mano al web.config, lo fanno altri.
Quindi cercavo qui nel manuale delle Web API:
Web API
1 Introduzione
2 Come creare Web API con Instant Developer
3 Specifiche delle chiamate a Web API
4 Esempi di chiamate
…
Ottimo, allora è semplicissimo! Butto il piccolo proxy 
Grazie mille!!!
2 Mi Piace
Le impostazioni CORS essendo una caratteristica del web server non sono nella documentazione delle Web API, in questo manuale è spiegato come realizzarle con Instant Developer Foundation e nel caso di installazione su IIS mi devo guardare il suo help.