codeigniter 使用命令WGET的Cronjob抛出禁止的错误

c9x0cxw0  于 2022-12-07  发布在  其他
关注(0)|答案(1)|浏览(107)

我有一个cronjob,它将在每天的特定时间运行,命令类似于wget -O- "https://www.replaced-with-example-domain.com/cron/export-all-files" >> /dev/null,它将创建一个excel文件并上传到服务器。
上面的命令结果ERROR 403: Forbidden
url /cron/export-all-files指向一个空白页面(没有身份验证),里面只有jquery可以访问另一个url(也没有身份验证)

视图页面(export.php)

<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.6.0/jquery.min.js"></script>

<script>
const baseUrl = "https://www.replaced-with-example-domain.com/";

$(document).ready(function(){
    $.ajax({
        type: 'post',
        url: `${baseUrl}sales/invoice-list/export`,
        data: {
            'export': true,
            'cron': true
        },
        success: function(res){
            console.log(res)
        }
    })
})
</script>

如果我在浏览器中手动运行url(在命令中),它可以执行,没有任何问题,但当运行cronjob时,它将抛出禁止的错误。
如果我在cron命令中添加--user-agent="Mozilla"(请参阅this),它将给予以下输出

--2022-06-05 12:16:01--  https://www.replaced-with-example-domain.com/cron/export-all-files
Resolving www.replaced-with-example-domain.com (www.replaced-with-example-domain.com)... xxx.x.xxx.17
Connecting to www.replaced-with-example-domain.com (www.replaced-with-example-domain.com)|xxx.x.xxx.17|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 488 [text/html]
Saving to: ‘STDOUT’

     0K                                                       100% 70.1M=0s

2022-06-05 12:16:01 (70.1 MB/s) - written to stdout [488/488]

但是没有创建和上传Excel文件,所以我想知道它是否真的工作。正确的方法是什么?谢谢。

eaf3rand

eaf3rand1#

url /cron/export-all-files指向一个空白页面(没有身份验证),里面只有jquery可以访问另一个url(也没有身份验证)
Wget不支持JavaScript执行,因此不支持jQuery。如果您需要在页面上获得JavaScript执行效果,您需要使用不同的工具,例如PhantomJS。您需要首先安装它。以下内容应满足您的需要

var page = require('webpage').create();
page.open('http://www.example.com', function(status) {
  console.log("Status: " + status);
  phantom.exit();
});

它只是打开http://www.example.com输出状态并退出.根据您需要更改地址,并将上面保存为loadpage.js,然后将其用作phantomjs loadpage.js .

相关问题