使用curl或Python生成Tableau可信票据?
我正在一个门户网站上工作,该网站将使用Tableau Trusted Ticket authentication(),但在生成票证时遇到一些问题 在继续开发之前,我想验证的一件事是,我将使用的web服务器已经被正确地列为白名单,用于生成受信任的票证请求 我已经运行了如上所述的白名单命令,但是我的PHP开发人员的代码不断返回使用curl或Python生成Tableau可信票据?,python,curl,python-requests,tableau-api,Python,Curl,Python Requests,Tableau Api,我正在一个门户网站上工作,该网站将使用Tableau Trusted Ticket authentication(),但在生成票证时遇到一些问题 在继续开发之前,我想验证的一件事是,我将使用的web服务器已经被正确地列为白名单,用于生成受信任的票证请求 我已经运行了如上所述的白名单命令,但是我的PHP开发人员的代码不断返回-1,表示失败 如果Tableau需要生成并返回一个可信票证代码的全部内容都是HTTP POST,那么我想我应该能够通过curl来测试这一点。考虑到有多少web服务器是基于Li
-1
,表示失败
如果Tableau需要生成并返回一个可信票证代码的全部内容都是HTTP POST,那么我想我应该能够通过curl来测试这一点。考虑到有多少web服务器是基于Linux的,我有点惊讶它没有被建议作为故障排除步骤
是否有人知道发送测试帖子以生成票证的正确方法,只是为了验证白名单?因为我对curl和Python不太熟悉,所以我尝试了它们(Python使用requests模块),但没有成功
卷曲版本:
curl --data "username=exampleuser" http://webserver.example.com/trusted
Python版本:
import requests
url = "http://webserver.example.com/trusted"
postdata = "username=exampleuser"
r = requests.post(url, postdata)
print r.text
这两个都返回一个-1
,这可能是因为白名单以某种方式失败了,也可能是因为这些请求的格式不正确。有没有人尝试过类似的方法并取得了成功
相反,是否有人拥有正确的POST
请求的明文字符串
有一大块有用的HTML和JavaScript,我已经能够用它们成功地生成票证,但由于它是基于JavaScript的,我还没有找到一种方法在我的headless Web服务器上运行它,或者捕获它发送的请求进行分析。因此,首先,当使用curl处理动词时,您必须使用
-X VERBNAME
,例如
~# curl -X POST http://httpbin.org/post
{
"url": "http://httpbin.org/post",
"data": "",
"json": null,
"args": {},
"form": {},
"origin": "127.0.0.1",
"headers": {
"User-Agent": "curl/7.19.6 (x86_64-unknown-linux-gnu) libcurl/7.19.6 OpenSSL/0.9.8n zlib/1.2.3 libidn/1.5",
"Connection": "close",
"Accept": "*/*",
"Content-Length": "0",
"Host": "httpbin.org"
},
"files": {}
}
其次,在提到参数时,我将尝试以下变化:
import requests
# Variation 1
r = requests.post(url, data={'username': 'exampleuser'})
# Variation 2
r = requests.post(url, params={'username': 'exampleuser'})
# Followed by these lines
print r.status_code
print r.text
cURL中的等效项应如下所示:
# Variation 1 equivalent
curl --data='username=exampleuser' -X POST http://httpbin.org/post
# Variation 2 equivalent
curl -X POST http://httpbin.org/post?username=exampleuser
第二行我猜这应该是一个
应用程序/x-www-form-urlencoded
POST
请求,所以这两个请求的第一个变体应该都可以工作。不过我对tableau一点也不熟悉,所以我不能保证这两种方法都能奏效。Eureka!谢谢你的帮助。Python代码变体#1和#2都可以工作;显然,我试图用参数来完成请求的工作。使用来自不同主机的参数,我能够确认确实存在白名单问题,并且能够纠正它。一旦我这么做了,我就能够验证我最初的curl命令是否有效——我只是没有从一个正确清除的主机上尝试过。现在可以了。显然--data选项意味着POST,所以我不需要显式地添加“-X POST”。@Dave TIL。我总是在显式动词中使用curl。此外,我还使用PUT、DELETE和其他动词来表示数据,所以我通常需要这样做。很高兴我能帮忙。