Mobile Safari 上的 XHR 请求 returns 无
XHR Request on Mobile Safari returns nothing
我在移动 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();
}
};
此代码正在向 Shopify 中的资产发出请求。
在我测试过的所有浏览器中,请求都工作得很好,但是在 Mobile Safari 中,我收到一个完全空的响应。
Shopify returns 设置了 Access-Control-Allow-Origin * header 所以我怀疑它是否与 CORS 有关,但也许我遗漏了什么。
此外,此代码已在生产网站上 运行 一段时间,最近开始出现错误,这让我认为这可能是 Safari 更新中的错误或 Shopify 处理方式的变化AJAX 个请求。
如果有人能就此问题提供任何线索,我们将不胜感激。
桌面版 Safari:(8.0.6)
移动版 Safari:
我认为问题与 Shopify 不接受使用常规 http 的请求有关 - 但它似乎是特定于浏览器的。
我通过对所有请求使用 https 解决了这个问题,并在用户尝试访问常规版本时将他们重定向到站点的 https 版本。
它没有解释导致问题的原因,但它是一个有效的解决方案。
我在移动 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();
}
};
此代码正在向 Shopify 中的资产发出请求。
在我测试过的所有浏览器中,请求都工作得很好,但是在 Mobile Safari 中,我收到一个完全空的响应。
Shopify returns 设置了 Access-Control-Allow-Origin * header 所以我怀疑它是否与 CORS 有关,但也许我遗漏了什么。
此外,此代码已在生产网站上 运行 一段时间,最近开始出现错误,这让我认为这可能是 Safari 更新中的错误或 Shopify 处理方式的变化AJAX 个请求。
如果有人能就此问题提供任何线索,我们将不胜感激。
桌面版 Safari:(8.0.6)
移动版 Safari:
我认为问题与 Shopify 不接受使用常规 http 的请求有关 - 但它似乎是特定于浏览器的。
我通过对所有请求使用 https 解决了这个问题,并在用户尝试访问常规版本时将他们重定向到站点的 https 版本。
它没有解释导致问题的原因,但它是一个有效的解决方案。