You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP CURL认证Pentaho BI成功但页面加载异常(含JS/CSS错误)求助

Troubleshooting Pentaho 7.1 Resource Fetch Issues with PHP cURL

Hey there, let's break down why your PHP cURL setup is returning pages with broken JS/CSS even after successfully authenticating and grabbing a cookie from Pentaho. Here are the key areas to check and fix:

Your code cuts off when extracting the cookie, and manually parsing cookies is error-prone. Instead of trying to split the response or URL to get the session ID, let cURL handle cookie management automatically with CURLOPT_COOKIEJAR and CURLOPT_COOKIEFILE:

  • When sending the login POST request, add this line to save the cookie to a file:
    curl_setopt($curl_connection, CURLOPT_COOKIEJAR, '/tmp/pentaho_cookies.txt');
    
  • For your subsequent request to fetch the target page, load the saved cookie with:
    curl_setopt($new_curl_connection, CURLOPT_COOKIEFILE, '/tmp/pentaho_cookies.txt');
    

This ensures all session cookies (including any additional ones Pentaho sets) are passed correctly—something that often goes wrong when manually extracting just a session ID.

2. Verify Your Target Page URL

Double-check that the URL you're requesting after login is the full, correct path. For example, if you're trying to access the Pentaho Home page, use:
http://10.10.10.215:8080/pentaho/Home
If you use a partial or incorrect path, Pentaho might return a stripped-down page without loading all required JS/CSS resources.

3. Match Browser-like Request Headers

Pentaho sometimes serves different content based on request headers. Make sure your follow-up request includes headers that mimic a real browser:

curl_setopt($new_curl_connection, CURLOPT_HTTPHEADER, array(
    'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
    'Accept-Language: en-US,en;q=0.5',
    'User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36'
));

Missing these headers can cause Pentaho to return a non-optimized or broken page.

4. Ensure Follow Redirects is Enabled for All Requests

You set CURLOPT_FOLLOWLOCATION for the login request, but make sure you also enable it for the follow-up page request:

curl_setopt($new_curl_connection, CURLOPT_FOLLOWLOCATION, true);

After login, Pentaho might redirect you to the actual dashboard or home page—without following this redirect, you might get an intermediate response with broken resources.

Full Working Example

Here's a complete, cleaned-up version of your code that handles cookies properly and includes all necessary options:

// Step 1: Authenticate and save cookies
$login_url = 'http://10.10.10.215:8080/pentaho/j_spring_security_check';
$cookie_file = '/tmp/pentaho_cookies.txt';

$login_curl = curl_init($login_url);
curl_setopt($login_curl, CURLOPT_CONNECTTIMEOUT, 30);
curl_setopt($login_curl, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36');
curl_setopt($login_curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($login_curl, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($login_curl, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($login_curl, CURLOPT_POST, true);
curl_setopt($login_curl, CURLOPT_POSTFIELDS, 'j_username=suzy&j_password=password');
curl_setopt($login_curl, CURLOPT_HTTPHEADER, array('Content-Type: application/x-www-form-urlencoded'));
curl_setopt($login_curl, CURLOPT_COOKIEJAR, $cookie_file);

$login_result = curl_exec($login_curl);
curl_close($login_curl);

// Step 2: Fetch the target page using saved cookies
$target_url = 'http://10.10.10.215:8080/pentaho/Home';
$page_curl = curl_init($target_url);
curl_setopt($page_curl, CURLOPT_CONNECTTIMEOUT, 30);
curl_setopt($page_curl, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36');
curl_setopt($page_curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($page_curl, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($page_curl, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($page_curl, CURLOPT_COOKIEFILE, $cookie_file);
curl_setopt($page_curl, CURLOPT_HTTPHEADER, array(
    'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
    'Accept-Language: en-US,en;q=0.5'
));

$page_result = curl_exec($page_curl);
curl_close($page_curl);

// Output or process the page result
echo $page_result;

Final Checks

  • If you still get broken resources, inspect the page source to see if the JS/CSS URLs are absolute or relative. If they're relative, you might need to resolve them to full URLs or use a proxy to load assets correctly.
  • Check if Pentaho has any IP-based restrictions or additional security modules that might be blocking your cURL requests.

内容的提问来源于stack exchange,提问作者Wal Heredia

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 03:58:38