Ubuntu TradingView WebHook API没有';不行,什么会阻止POST请求?
自从TradingView开放他们的webhook支持以来,我一直在绞尽脑汁想弄清楚为什么我的服务器没有收到任何信号。到目前为止,我已经完成了以下工作:Ubuntu TradingView WebHook API没有';不行,什么会阻止POST请求?,ubuntu,nginx,webhooks,pine-script,tradingview-api,Ubuntu,Nginx,Webhooks,Pine Script,Tradingview Api,自从TradingView开放他们的webhook支持以来,我一直在绞尽脑汁想弄清楚为什么我的服务器没有收到任何信号。到目前为止,我已经完成了以下工作: 确保端口已打开,确保TradingView实际发送POST请求 尝试在barebones nodejs服务器、flask服务器上发布,最后在flask服务器上发布nginx反向代理 在webhook.site上交叉引用了传入的文章标题和正文,在Postman以及其他工具上复制了它,我的服务器收到了它们 你可以在这里看到现场发出的信号: 但是
- 确保端口已打开,确保TradingView实际发送POST请求
- 尝试在barebones nodejs服务器、flask服务器上发布,最后在flask服务器上发布nginx反向代理
- 在webhook.site上交叉引用了传入的文章标题和正文,在Postman以及其他工具上复制了它,我的服务器收到了它们
server {
listen 80;
server_name lunarlabs.org;
location / {
add_header 'Access-Control-Allow-Origin' '*';
add_header 'Access-Control-Allow-Credentials' 'true';
add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';
add_header 'Access-Control-Allow-Headers' 'DNT,X-CustomHeader,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type';
return 301 https://$host$request_uri;
}
}
server {
listen 443 ssl;
server_name lunarlabs.org;
ssl_certificate /etc/letsencrypt/live/***.org/cert.pem;
ssl_certificate_key /etc/letsencrypt/live/***.org/privkey.pem;
# ...
access_log /var/log/nginx.log;
error_log /var/log/nginxerror.log;
root /var/www/html/public;
index index.php;
location / {
add_header 'Access-Control-Allow-Origin' '*';
add_header 'Access-Control-Allow-Credentials' 'true';
add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';
add_header 'Access-Control-Allow-Headers' 'DNT,X-CustomHeader,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,X-Forwarded-For,content-length';
include proxy_params;
proxy_pass http://unix:/home/tvhook/***;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}
}
我设置的演示webhook服务器可以在以下位置访问——任何JSON格式的POST数据都应该返回200。但是TradingView的信号似乎真的不喜欢我的服务器,或者我的服务器真的不喜欢他们的请求。Post:x509:未知授权机构签署的证书
curl—数据“ds”
curl:(60)对等证书无法使用已知CA证书进行身份验证
详情如下:
curl默认情况下使用“bundle”执行SSL证书验证
颁发证书机构(CA)公钥(CA证书)。如果默认
捆绑文件不足,您可以指定一个备用文件
使用--cacert选项。
如果此HTTPS服务器使用由中表示的CA签名的证书
对于捆绑包,证书验证可能由于错误而失败
证书有问题(可能已过期,或者名称可能已过期)
与URL中的域名不匹配)。
如果要关闭curl对证书的验证,请使用
-k(或--unsecure)选项。我遇到了相同的问题,但我的设置可能有点不同 Apache+烧瓶
tradingview\u alert=request.get\u json(force=True)
我也有同样的问题 Tradingview支持报告了错误:“x509:未知授权机构签署的证书”。 然而,这个要求对我来说很有效
我使用的是Comodo SSL证书,结果证明我没有在nginx中设置“链证书”。设置它并重新启动nginx很有帮助。电视上的网络钩子现在工作得很好。我试过Windows和Linux(ubuntu)服务器(使用Apache),它们似乎都收到了ping,但消息中的数据是空的。直到今天我才发现这个问题(我怀疑电视不能成功地使用curl) 所以,我有两个选择: 1) 移动到“邮件到短信”挂钩,并使用简单的服务 或 2) 使用Webhook的直接链接,如: 警报1:
example.com/?action=BUY
警报2:
example.com/?action=SELL
因此,您不必关心空消息,而是提取
$\u GET
查询变量。这是您和OP的配置之间的答案还是差异?这是对POST请求中警报描述tradingview传递消失的答案,以及我的解决方法。大多数TL可能与tradingview发送JSON有关,但不设置头来实现这一点。您是如何解决的?