我看到在TableOverflow中没有太多Tableau专家,但也许有人在那之前就有过这个问题,并且知道解决方案。我是Tableau的总厨师,所以如果这个问题真的存在,请原谅我。提前致谢!Tableau门票 - POST获取门票返回登录表单,而不是门票ID
的系统
我们的Tableau设立的方式是从Web服务器独立的服务器上。该应用程序使用CakePHP 2.2.0稳定版以PHP编写。
10.0.0.10 - webserver
10.0.0.11 - tableau
为了有一个客户端查看由的Tableau生成的报告中,我们使用的是可信认证售票系统,其中客户端发出的URL与特定的票。客户端然后使用此故障单直接询问Tableau服务器以获取报告。
一个例子:
- 客户端获得http://example.com/reports/view/3 - 这是10.0.0.10内部。
- 服务器员额10.0.0.11,并要求客户端的门票观点报3
- 的Tableau服务器响应后以数字,例如987654321.
- 服务器响应客户端的GET与页面,包括票证。
- 客户端GETS http://tableau.example.com/trusted/987654321/view3
- Tableau服务器根据故障单验证客户端IP,并使用报告的HTML进行响应。
的问题
问题是这样的:当代码请求的画面票号(步骤2 & 3的上方),画面服务器与认证页面,而不是一个票据ID响应。如果我在$ postdata数组中注释掉“target_site”参数,那么tableau不会响应登录页面,而只是说“-1”。
的PHP代码生成信任网址:
<?php
public function get_trusted_url($view = 'book2sheet1') {
$email = $this->Auth->user();
$email = $email['Email']; //This email is registered as a Tableau user!
$postdata = http_build_query(
array(
'username' => $email,
'target_site' => 'oursite', //If I comment this line out, Tableau no longer returns an auth page and instead simply returns "-1"
'client_ip' => $_SERVER['REMOTE_ADDR']
)
);
$opts = array('http' =>
array(
'method' => 'POST',
'header' => 'Content-type: application/x-www-form-urlencoded',
'content' => $postdata
)
);
$context = stream_context_create($opts);
$ticket = file_get_contents('http://10.0.0.11/trusted/', false, $context);
if($ticket > 0) {
return 'http://tableau.example.com/t/rg/trusted/' . $ticket . '/' .$view . '?:embed=yes&:comments=no&:toolbar=yes';
} else {
echo 'failure'; //debug
print_r($ticket); //debug - this prints out the auth page
return false;
}
}
任何帮助将不胜感激!正如我所说,我是一个总的小白在的Tableau :)使用print_r('ticket')
谢谢
图片返回登录的HTML,转储到新的一页!
谢谢! 根据您的回复,我们更仔细地查看了target_site,结果发现我们将错误的目标网站传递到了应用程序中。我们称其为名称(“reportgen”),Tableau需要其ID(“rg”)。 也许这将帮助未来的同一个问题的人:) – 2012-07-06 21:12:58