我在一个EC2实例中托管了一个网站,并使用http://ec2... url访问该页面。该页面向托管在同一实例上的另一个webapp发出ajax请求。如果我访问通过ZScaler代理的页面,我会在chrome上得到XMLHttpRequest cannot load异常。这是因为当通过代理时,源url被改变。
我尝试添加头文件Access-Control-Allow-Origin,也尝试添加JSONP。但都不管用。
关于ArunDhaJ
发布于 2017-08-28 23:47:33
我也有同样的问题,CORS消息实际上对我具有误导性。
设置
使用nginx向位于同一实例上的EC2服务器发送/api/上的前端和proxy_passing请求的amazon实例
问题所在
当用户单击该按钮时,AJAX请求会失败,因为会出现以下错误消息:
获取接口无法加载https://gateway.zscaler.net/auD?origurl=http%3A%2F%2Fmyapi&wexps=1&_ordtok=S243WVLHBRDR5VWQ8PfZ4pnDJ8。从“”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“”的重定向已被CORS策略阻止:请求的资源上不存在“”Access-Control-Allow-Origin“”标头。“因此不允许访问源'http://myapi‘。如果不透明的响应满足您的需求,请将请求的模式设置为'no- CORS‘,以便在禁用CORS的情况下获取资源。
然而,一切都可以直接访问互联网(zscaler代理被禁用)。
解决方案
我使用fetch方法发出AJAX请求,该方法默认情况下会忽略cookie。API请求被重定向到另一个域上的zscaler身份验证页面,并导致CORS错误消息。
将选项credentials: 'same-origin'传递给fetch调用解决了这个问题。
更多详细信息here
发布于 2015-02-06 13:53:27
我还没有找到一个完美的解决方案。但是,可以在下面找到所使用的变通方法:
为了进行开发,我开始使用chrome禁用安全特性,如下所示:
chrome.exe --disable-web-security否则,我们需要配置zscaler设置以将URL列入白名单。我不知道如何配置它,我们的it团队做到了。
希望能有所帮助。
https://stackoverflow.com/questions/23101138
复制相似问题