在我的页面中,我有这个ajax调用
$.getJSON("@Url.Action("GetSchedulers")",{ start: start,end: end },function(data) { fillCalendar(data); });
一切都可以正常工作,除非我尝试在Zscaler代理之后访问它,否则浏览器会返回一个可疑错误“请求的资源上存在”Access-Control-Allow-Origin“头”,而Request url是“https://gateway.zscaler.net/auD?origurl= {} my_url”
有没有人知道如何执行请求,而不是被zscaler过滤?
解决方法
您需要在ASP.NET网站中启用
CORS,并允许https://gateway.zscaler.net域.当页面中的资源(例如AJAX请求)到与用于提供页面的用户不同的域时,需要CORS.根据
RFC 6454,方案(http vs https),地址和端口必须匹配.
假设您有一个服务GetSchedulers请求的ASP.NET Web API项目,请按照Asp.Net WebAPI instructions:
>添加Microsoft.AspNet.WebApi.Cors nuGet包
>添加config.EnableCors();到void Register(HttpConfiguration config)方法
>将此属性添加到控制器中:[EnableCors(originCors(originins:origin https://gateway.zscaler.net“,标题:”*“,方法:”*“)]
如果您使用不同的服务器端实现,则说明将略有不同.例如,如果您正在使用OWIN,请使用Microsoft.Owin.Cors nuGet软件包.