【问题标题】:XMLHttpRequest cannot load issue with ZScalerXMLHttpRequest 无法加载 ZScaler 的问题
【发布时间】:2014-05-30 20:03:32
【问题描述】:

我在 EC2 实例中托管了一个网站,并使用 http://ec2... url 访问该页面。该页面向托管在同一实例上的另一个 Web 应用程序发出 ajax 请求。如果我访问通过 ZScaler 代理的页面,我会在 chrome 上收到 XMLHttpRequest cannot load 异常。这是因为在通过代理时,原始网址发生了变化。

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

问候 阿伦达杰

【问题讨论】:

    标签: javascript jquery ajax amazon-ec2


    【解决方案1】:

    我遇到了同样的问题,CORS 消息实际上误导了我。

    设置

    一个亚马逊 EC2 实例,带有一个 nginx 服务前端和 /api/ 上的 proxy_passing 请求到位于同一实例上的 IIS 服务器

    问题

    当用户点击按钮时,AJAX 请求失败,因为如下错误信息:

    Fetch API 无法加载 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”标头。因此,Origin 'http://myapi' 不允许访问。如果不透明的响应满足您的需求,请将请求的模式设置为“no-cors”以获取禁用 CORS 的资源。

    然而,一切都可以直接访问互联网(zscaler 代理已禁用)。

    解决方案

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

    将选项credentials: 'same-origin' 传递给fetch 调用解决了这个问题。

    更多详情here

    【讨论】:

    【解决方案2】:

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

    为了开发,我开始 chrome 禁用安全功能:

    chrome.exe --disable-web-security
    

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

    希望对你有帮助。

    【讨论】:

    • 我也遇到了这个问题——网站在 Firefox 和 IE 中工作。我还注意到 ?sm_au_=XXXXXXXX 添加到 chrome 中存在但 Firefox 或 IE 中不存在的查询字符串中。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-24
    • 2011-11-01
    • 1970-01-01
    • 2023-04-10
    相关资源
    最近更新 更多