H5 页面在 安卓 8.1 系统版本中 浏览器打开获取不到数据 `status`返回`0`这种要怎么改?

H5 页面在 安卓 8.1 系统版本中 浏览器打开获取不到数据 status返回0这种要怎么改?
image.png

ajax({
        url: host + '/activity/homepage',
        type: 'GET',
        async: true,
        dataType: 'json',
        data: dataParams,
          success: res =>{
        }
})
阅读 1.2k
avatarAI BotBETA

在安卓 8.1 系统版本中,浏览器可能由于一些原因无法成功完成 AJAX 请求,导致 status 返回 0。这种情况通常与跨域请求、网络问题、或者浏览器安全策略有关。以下是一些建议的解决步骤:

  1. 检查跨域问题

    • 确保服务器配置了正确的 CORS (Cross-Origin Resource Sharing) 头部,以允许来自你的应用的域的请求。
    • 如果可能,尝试在服务器端设置 Access-Control-Allow-Origin* (不推荐用于生产环境,因为这是一个安全风险)。
  2. 检查网络连接

    • 确保设备已连接到网络,并且可以访问其他网站或服务。
    • 尝试在不同的网络环境下(如 Wi-Fi 和移动数据)运行应用,以排除网络问题。
  3. 检查请求参数

    • 确保 hostdataParams 等参数正确无误,并且服务器能够正确解析这些参数。
  4. 使用错误回调处理

    • 添加一个 error 回调来处理 AJAX 请求失败的情况。这样你可以获取更多关于失败原因的信息。
  5. 更新浏览器和安全设置

    • 尝试更新安卓系统上的浏览器到最新版本。
    • 检查浏览器的安全设置,确保没有阻止 AJAX 请求。
  6. 检查服务器日志

    • 查看服务器日志,看看是否有关于这个请求的任何错误或警告。
  7. 尝试使用其他 AJAX 库

    • 如果可能,尝试使用其他 AJAX 库(如 jQuery 的 $.ajax)来发送请求,看看问题是否仍然存在。
  8. 考虑使用 Fetch API

    • 考虑使用现代的 Fetch API 替代传统的 AJAX,因为 Fetch 提供了更好的错误处理机制。

下面是一个添加了错误回调的示例代码:

ajax({
    url: host + '/activity/homepage',
    type: 'GET',
    async: true,
    dataType: 'json',
    data: dataParams,
    success: res => {
        // 处理成功响应
    },
    error: xhr => {
        // 处理错误
        console.error('AJAX 请求失败', xhr.status, xhr.statusText);
    }
});

请尝试以上步骤,并仔细检查你的代码和服务器设置,以找到导致问题的具体原因。如果问题仍然存在,你可能需要提供更多的上下文信息,如服务器配置、网络请求的完整日志等,以便进一步诊断问题。

3 个回答

感谢各位大佬的热心留言,我的问题解决了,是跨域导致的!
我在发送请求的时候添加了请求头token,userId,Content-Type

    xhr.setRequestHeader('token', options.data.token);
    xhr.setRequestHeader('userId', options.data.userId);
    xhr.setRequestHeader('Content-Type', 'application/json;charset-utf-8');

此时后端通过CORS解决跨域问题
9a71048f1376686ccc559ca76b3fb16.png
可以看到此时Access-Control-Expose-Headers: *
问题正是出在这里
可以看这篇文章写的很清晰再遇CORS -- 自定义HTTP header的导致跨域
也可以参考这个问题 参考链接
服务端应该修改Access-Control-Allow-Headers中的*号为具体的字段

  resp.headers['Access-Control-Allow-Headers'] = 'content-type,token,userId'  

这里是修改后的样子,至此问题解决
c28d8e32e45ed354267bfc585aafe61.png

你这host地址是?,直接在浏览器访问这个接口能正常使用吗

检查下网页地址和接口地址 是否一个http 一个https
如果不同的话将协议统一下试试

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题