Zscaler的Ajax问题

Dav*_*res 11 javascript c# ajax asp.net-mvc

在我的页面上,我有这个ajax调用:

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

一切正常,除非我尝试在Zscaler代理后面访问它,然后浏览器返回一个CORS错误:

"No 'Access-Control-Allow-Origin' header is present on the requested resource."
Run Code Online (Sandbox Code Playgroud)

请求网址是https://gateway.zscaler.net/auD?origurl={my_url}.

有没有人知道如何在没有被zscaler过滤的情况下发送请求?

Jar*_*tra 6

您需要在ASP.NET网站中启用CORS,并允许https://gateway.zscaler.net域.当页面中的资源(例如AJAX请求)与用于提供页面的域不同时,需要CORS.根据RFC 6454,该方案(http vs https),地址和端口必须匹配.

假设您有一个ASP.NET Web API项目为GetSchedulers请求提供服务,请遵循Asp.Net WebAPI说明:

  1. 添加Microsoft.AspNet.WebApi.Cors nuGet包
  2. 添加config.EnableCors();void Register(HttpConfiguration config)方法
  3. 将此属性添加到控制器: [EnableCors(origins: "https://gateway.zscaler.net", headers: "*", methods: "*")]

如果您使用的是其他服务器端实现,则说明会略有不同.例如,如果您正在使用OWIN,则使用Microsoft.Owin.Cors nuGet包.