Mobile Safari 上的 XHR 请求不返回任何内容

Mig*_*ido 5 javascript safari xmlhttprequest shopify ios

我在移动 safari (iOS 8.3) 中执行 XMLHttpRequest 时遇到问题。

var ajax_request = function(){

    this.get = function( url, callback ){

        var r = new XMLHttpRequest();


        r.open( 'GET', url, true );
        r.onload = function (data) {
            console.log(data);
            if ( r.status >= 200 && r.status < 400 ) {
                callback(r);
            } else {
                console.log("An error occured");
            }
        };
        r.onerror = function (err, url, lineNumber) {
            console.log("A connection error occured");
            console.log(err);
            console.log(lineNumber);
        };

        r.send();

    }

};
Run Code Online (Sandbox Code Playgroud)

此代码正在向 Shopify 中的资产发出请求。

在我测试过的所有浏览器中,请求都运行得很好,但是在 Mobile Safari 中,我收到了完全空的响应。

Shopify 返回了 Access-Control-Allow-Origin * 标头集,因此我怀疑它与 CORS 相关,但也许我遗漏了一些东西。

此外,这段代码已经在生产站点上运行了一段时间,并且最近开始出现错误,这让我认为这要么是 safari 更新中的错误,要么是 Shopify 处理 AJAX 请求的方式发生了变化。

任何人都可以就这个问题提供任何线索,我们将不胜感激。

桌面 Safari:(8.0.6)

在此输入图像描述

移动Safari:

Mobile Safari 中的响应屏幕截图

Mig*_*ido 0

我认为问题与 Shopify 不接受使用常规 http 的请求有关 - 但它似乎是特定于浏览器的。

\n\n

我通过对所有请求使用 https 解决了这个问题,并在用户尝试访问常规版本时将用户重定向到该网站的 https 版本。

\n\n

它没有解释导致问题的原因,但它是一个可行的解决方案。

\n