2015-10-25 12 views
11

sulla mia pagina ho questo ajax chiamata:problema Ajax con Zscaler

$.getJSON(
    "@Url.Action("GetSchedulers")", 
    { start: start, end: end }, 
    function(data) { 
     fillCalendar(data); 
    } 
); 

Tutto funziona bene, tranne quando provo ad accedere dietro un proxy Zscaler, il browser restituisce un errore di CORS:

"No 'Access-Control-Allow-Origin' header is present on the requested resource." 

L'URL di richiesta è https://gateway.zscaler.net/auD?origurl={my_url}.

Qualcuno sa come inviare la richiesta senza essere filtrata da zscaler?

+0

Funziona: http://stackoverflow.com/a/28359412/495455? In tal caso, è necessario riconfigurare Zscaler o utilizzare un proxy diverso. –

risposta

6

È necessario abilitare CORS nel tuo sito web ASP.NET, e consentire il dominio https://gateway.zscaler.net. CORS è richiesto quando una risorsa in una pagina (ad es. Richiesta AJAX) si trova in un dominio diverso da quello utilizzato per servire la pagina. Secondo lo RFC 6454, lo schema (http vs https), l'indirizzo e la porta devono corrispondere.

Supponendo di avere un progetto ASP.NET Web API servire GetSchedulers richieste, seguite la Asp.Net WebAPI instructions:

  1. aggiungere il pacchetto Microsoft.AspNet.WebApi.Cors Nuget
  2. Aggiungere config.EnableCors(); al metodo void Register(HttpConfiguration config)
  3. Aggiungi questo attributo al controller: [EnableCors(origins: "https://gateway.zscaler.net", headers: "*", methods: "*")]

Se si utilizza un diff Per quanto riguarda l'implementazione lato server, le istruzioni saranno leggermente diverse.Ad esempio, se utilizzi OWIN, utilizza il pacchetto nuGet Microsoft.Owin.Cors.

1

Provare a utilizzare JSON-P per la richiesta: http://json-p.org/. Se questo non funziona, controlla la configurazione della risorsa di backend per accettare richieste da un dominio diverso.

0

L'unica opzione è disabilitare Zscaler dal tuo localhost. È possibile farlo utilizzando regedit. Zscaler è solitamente configurato solo per le workstation. Quando si distribuisce l'applicazione sul server di test/produzione, dovrebbe funzionare lì.

Regedit passo dopo passo le istruzioni per disabilitare Zscaler di seguito.

Disabilitare la cache automatica dei risultati del proxy utilizzando la seguente chiave di registro: HKEY_CURRENT_USER \ Software \ Policies \ CurrentVersion Internet Settings Microsoft \ Windows \ \

Valore: EnableAutoproxyResultCache

Tipo: REG_DWORD

Valore dati: = disabilitare c dolorante

Se la chiave di Registro di sistema non è presente, è possibile creare la chiave di Registro di sistema utilizzando il seguente file di registro:

[HKEY_CURRENT_USER \ Software \ Policies \ \ \ CurrentVersion \ Internet Microsoft Windows] "EnableAutoproxyResultCache" = dword: 00000000"