XMLHttpRequest无法加载ZScaler的问题

时间:2014-04-16 05:57:19

标签: javascript jquery ajax amazon-ec2

我在EC2实例中托管了一个网站,并使用http://ec2...网址访问该网页。该页面向同一实例上托管的另一个webapp发出ajax请求。如果我访问通过ZScaler代理的页面,我在chrome上获得XMLHttpRequest cannot load例外。这是因为当通过代理时,原始URL被更改。

我尝试添加标题Access-Control-Allow-Origin以及JSONP。但没有任何效果。

此致 ArunDhaJ

2 个答案:

答案 0 :(得分:5)

我遇到了同样的问题,而CORS信息实际上对我有误导性。

设置

一个亚马逊EC2实例,其中nginx在/ api /上为位于同一实例上的IIS服务器提供前端和proxy_passing请求

问题

当用户单击该按钮时,由于以下错误消息,AJAX请求失败:

  

Fetch API无法加载https://gateway.zscaler.net/auD?origurl=http%3A%2F%2Fmyapi&wexps=1&_ordtok=S243WVLHBRDR5VWQ8PfZ4pnDJ8。 CORS策略已阻止从“https://gateway.zscaler.net/auD?origurl=http%3A%2F%2Fmyapi&wexps=1&_ordtok=S243WVLHBRDR5VWQ8PfZ4pnDJ8”重定向到“https://gateway.zscaler.net/auT?origurl=http%3A%2F%2Fmyapi&wexps=1&_ordtok=S243WVLHBRDR5VWQ8PfZ4pnDJ8&wexps=1”:请求的资源上没有“Access-Control-Allow-Origin”标头。因此,不允许原点“http://myapi”访问。如果不透明响应满足您的需求,请将请求的模式设置为“no-cors”以获取禁用CORS的资源。

但是一切都可以直接访问互联网(禁用zscaler代理)。

解决方案

我使用fetch方法发出AJAX请求,默认情况下此方法会忽略Cookie。 API请求被重定向到另一个域上的zscaler auth页面并导致CORS错误消息。

将选项credentials: 'same-origin'传递给fetch来电解决了问题。

更多详情here

答案 1 :(得分:0)

我还没有找到完美的解决方案。但是,请在下面找到使用的变通方法:

对于开发,我启动chrome禁用安全功能:

chrome.exe --disable-web-security

否则,我们需要配置zscaler设置以将URL列入白名单。我不知道如何配置它,我们的IT团队做到了。

希望它有所帮助。