2013-05-16 74 views
0

我正在使用Tableau Trusted Ticket身份验证(as described here)的门户网站上工作,但在生成故障单时遇到一些问题。使用curl或Python生成Tableau可信任票证?

在继续开发之前我想验证的一件事是,我将使用的Web服务器已正确列入白名单以生成可信票证请求。

我已经按照说明运行了白名单命令,但是我的PHP开发者代码一直返回-1,表示失败。

如果所有Tableau需要生成并返回受信任的票证代码是HTTP POST,我想我应该可以通过curl来测试。我有点惊讶,因为有多少Web服务器是基于Linux的,所以我们不建议将它作为故障排除步骤。

有谁知道正确的方式发送一个测试POST以生成一张票,只是为了验证白名单?由于我对curl和Python有一些熟悉,所以我尝试了那些(使用请求模块的python),但没有运气。

卷曲版本:

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块over here,我已经能够成功地生成门票,但由于它是基于JavaScript的,我还没有想过在我的无人网络服务器上运行它或捕获请求的方法它发送进行分析。

回答

2

所以首先,使用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 

在卷曲当量应该是这个样子:

# 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 

我在第二行猜测,这应该是application/x-www-form-urlencodedPOST请求,所以两者的第一个变体应该工作。虽然我并不熟悉画面,但我不能保证两者都能正常工作。

+0

尤里卡!非常感谢您的帮助。 Python代码变体#1和#2都可以工作;显然我正在尝试使用参数为它做请求。 – Dave

+0

使用来自不同主机的数据,我能够确认实际上存在白名单问题,并且能够更正它。 一旦我这样做了,我能够验证实际上,我的初始curl命令应该已经工作 - 我只是没有从一个正确清理的主机尝试它。它现在有效。显然,--data选项意味着POST,所以我不需要明确地添加“-X POST”。 – Dave

+0

@Dave TIL。我总是对显式动词使用curl。然后我再次使用PUT,DELETE和其他动词与数据,所以我通常需要。很高兴我能帮上忙。 –