我有一个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文件,所以我想知道它是否真的工作。正确的方法是什么?谢谢。
1条答案
按热度按时间eaf3rand1#
url
/cron/export-all-files
指向一个空白页面(没有身份验证),里面只有jquery可以访问另一个url(也没有身份验证)Wget不支持JavaScript执行,因此不支持jQuery。如果您需要在页面上获得JavaScript执行效果,您需要使用不同的工具,例如PhantomJS。您需要首先安装它。以下内容应满足您的需要
它只是打开
http://www.example.com
输出状态并退出.根据您需要更改地址,并将上面保存为loadpage.js
,然后将其用作phantomjs loadpage.js
.