【问题标题】:Unable to send ajax get requests with Meteor on Android *only*无法在 Android 上使用 Meteor 发送 ajax 获取请求 *仅限 *
【发布时间】:2020-09-09 21:56:20
【问题描述】:

我有几个严重依赖 ajax 获取请求的 Meteor 应用程序。在某些时候,这些应用程序之一停止发送 ajax get 请求,仅在最新版本的 Android 上。 相同的应用程序可以在浏览器、iOS 和旧版本的 Android 上运行。 (或者更确切地说,在 Fire 平板电脑上。)所以,我认为这意味着这不是 CORS 问题。 在任何平台上,使用相同代码的其他应用都不受影响。

在我看来,Android 正在阻止这些请求,我不明白如何进行这项工作。

另外,我还没有找到具有最新版本的 Android 的设备确实可以工作,这意味着它不仅仅是我的手机。

这是一个示例请求:

$.ajax({
    type: "GET",
    traditional: true,
    url: url,
    contentType: 'application/json; charset=utf-8',
    dataType: "json",
    data: {},
    success: function (result) {
        ...
    },
    error: function (xhr) {
    var propValue;
    for(var propName in xhr) {
        propValue = xhr[propName]

        $("#log").prepend(propName + ": " + propValue + "<br />");
    }

    }
});

这是输出:

statusText: error
status: 0
responseText:
error: function(){return o&&(n&&!t&&(s=o.length-1,a.push(n)),function t(n){p.each(n,(function(n,r){p.isFunction®?e.unique&&l.has®||o.push®:r&&r.length&&“string”!==p.type®&&t®}))}(arguments),n&&!t&&u()),this}
success: function(){return o&&(n&&!t&&(s=o.length-1,a.push(n)),function t(n){p.each(n,(function(n,r){p.isFunction®?e.unique&&l.has®||o.push®:r&&r.length&&“string”!==p.type®&&t®}))}(arguments),n&&!t&&u()),this}
complete: function(){return o&&(n&&!t&&(s=o.length-1,a.push(n)),function t(n){p.each(n,(function(n,r){p.isFunction®?e.unique&&l.has®||o.push®:r&&r.length&&“string”!==p.type®&&t®}))}(arguments),n&&!t&&u()),this}
progress: function(){return o&&(n&&!t&&(s=o.length-1,a.push(n)),function t(n){p.each(n,(function(n,r){p.isFunction®?e.unique&&l.has®||o.push®:r&&r.length&&“string”!==p.type®&&t®}))}(arguments),n&&!t&&u()),this}
fail: function(){return o&&(n&&!t&&(s=o.length-1,a.push(n)),function t(n){p.each(n,(function(n,r){p.isFunction®?e.unique&&l.has®||o.push®:r&&r.length&&“string”!==p.type®&&t®}))}(arguments),n&&!t&&u()),this}
done: function(){return o&&(n&&!t&&(s=o.length-1,a.push(n)),function t(n){p.each(n,(function(n,r){p.isFunction®?e.unique&&l.has®||o.push®:r&&r.length&&“string”!==p.type®&&t®}))}(arguments),n&&!t&&u()),this}
pipe: function(){var e=arguments; return p.Deferred((function(n){p.each(t,(function(t,o){var a=p.isFunction(e[t])&&e[t]; i[o[1]]((function(){var e=a&&a.apply(this,arguments); e&&p.isFunction(e.promise)?e.promise().progress(n.notify).done(n.resolve).fail(n.reject):no[0]+“With”}))})),e=null})).promise()} promise: function(e){return null!=e?p.extend(e,r):r}
then: function(){var e=arguments; return p.Deferred((function(n){p.each(t,(function(t,o){var a=p.isFunction(e[t])&&e[t]; i[o[1]]((function(){var e=a&&a.apply(this,arguments); e&&p.isFunction(e.promise)?e.promise().progress(n.notify).done(n.resolve).fail(n.reject):no[0]+“With”}))})),e=null})).promise()}
always: function(){return i.done(arguments).fail(arguments),this}
state: function(){return n}
abort: function(e){var t=e||w; return l&&l.abort(t),C(0,t),this}
statusCode: function(e){var t; if(e)if(b<2)for(t in e)v[t]=[v[t],e[t]]; else T.always(e[T.status]); return this}
overrideMimeType: function(e){return b||(f.mimeType=e),this}
setRequestHeader: function(e,t){var n=e.toLowerCase(); return b||(e=x[n]=x[n]||e,y[e]=t),this}
getAllResponseHeaders: function(){return 2===b?a:null}
getResponseHeader: function(e){var t; if(2===b){if(!c)for(c={}; t=Pt.exec(a); )c[t[1].toLowerCase()]=t[2]; t=c[e.toLowerCase()]}return null==t?null:t}
readyState: 0

任何见解将不胜感激。

【问题讨论】:

    标签: android ajax meteor


    【解决方案1】:

    在后端检查您的 SSL。

    自 Android 9 起,您的 api 端点必须:

    • 使用 HTTPS
    • 不能自签名
    • 使用公共证书颁发机构 仅限

    【讨论】:

    • 谢谢。确实是这样。我刚才想通了; SO还没有通知我你的回复。 ://
    猜你喜欢
    • 1970-01-01
    • 2014-05-18
    • 1970-01-01
    • 1970-01-01
    • 2021-04-04
    • 2017-01-11
    • 2012-07-04
    • 2016-12-01
    • 1970-01-01
    相关资源
    最近更新 更多