uni-app 【已解决】ios下plus.downloader的setRequestHeader无法设置Referer

uni-app 【已解决】ios下plus.downloader的setRequestHeader无法设置Referer

1 回复

更多关于uni-app 【已解决】ios下plus.downloader的setRequestHeader无法设置Referer的实战教程也可以访问 https://www.itying.com/category-93-b0.html


在 uni-app 中,使用 plus.downloader 进行文件下载时,可能会遇到在 iOS 下无法通过 setRequestHeader 设置 Referer 的问题。这个问题通常是由于 iOS 系统的安全限制导致的。

解决方案

  1. 使用 plus.net 代替 plus.downloaderplus.net 提供了更灵活的请求头设置,可以尝试使用 plus.net 来替代 plus.downloader

    const req = plus.net.createRequest();
    req.setRequestHeader('Referer', 'your-referer-url');
    req.open('GET', 'your-download-url');
    req.onload = function (res) {
        console.log('Download success:', res);
    };
    req.onerror = function (err) {
        console.error('Download error:', err);
    };
    req.send();
    
  2. 使用 uni.downloadFileuni.downloadFile 是 uni-app 提供的跨平台下载 API,可以尝试使用它来替代 plus.downloader

    uni.downloadFile({
        url: 'your-download-url',
        header: {
            'Referer': 'your-referer-url'
        },
        success: (res) => {
            console.log('Download success:', res);
        },
        fail: (err) => {
            console.error('Download error:', err);
        }
    });
    
  3. 使用 XMLHttpRequest: 如果以上方法都不适用,可以尝试使用原生的 XMLHttpRequest 来进行下载。

    const xhr = new XMLHttpRequest();
    xhr.open('GET', 'your-download-url', true);
    xhr.setRequestHeader('Referer', 'your-referer-url');
    xhr.onload = function () {
        if (xhr.status === 200) {
            console.log('Download success:', xhr.response);
        } else {
            console.error('Download error:', xhr.statusText);
        }
    };
    xhr.onerror = function () {
        console.error('Download error:', xhr.statusText);
    };
    xhr.send();
回到顶部