代码之家  ›  专栏  ›  技术社区  ›  acme

更改CURL请求的URL位置?

  •  0
  • acme  · 技术社区  · 16 年前

    http://wwww.externalserver.com/login “”)。此服务器正在发送纯HTML作为响应。问题是,浏览器中显示的URL仍然在我的本地服务器上,比方说“ http://localhost/callExternal.php

    此目标页面返回的HTML包含相对图像路径。由于URL不匹配,这些相对路径无效,因此不会加载图像或样式表。

    有没有办法让CURL(或在PHP4中工作的任何其他解决方案)更改位置,从而使这些相对路径工作(而不解析HTML和更改路径)?

    这是调用脚本“ ":

    $data = '<?xml version="1.0" encoding="UTF-8"?><Some XML></Some XML>';  
    
    $res = curl_init('http://wwww.externalserver.com/login');
    
    curl_setopt($res, CURLOPT_POST, 1);
    curl_setopt($res, CURLOPT_HEADER, 0);
    curl_setopt($res, CURLOPT_POSTFIELDS, $data);
    curl_setopt($res, CURLOPT_FOLLOWLOCATION, 1);
    curl_setopt($res, CURLOPT_HTTPHEADER, array("Content-Type: text/xml; charset=UTF-8"));
    curl_exec($res);
    curl_close($res);
    

    这是返回的HTML的一个片段,带有一个链接示例:

    <html>
    <head>
    <link rel="stylesheet" type="text/css" media="print" href="/css/screen.css" />
    </head>
    <body>test</body>
    </html>
    

    而URL仍在显示“ http://localhost/callExternal.php ,因此指向样式表的链接显然不起作用。

    1 回复  |  直到 16 年前
        1
  •  1
  •   Pascal MARTIN    16 年前

    您可能需要尝试插入 <base> <head> HTML的一节;引用 w3schools :

    这个 <基地> 标记指定默认值 地址或所有的默认目标

    这个 < 标签进入头部 要素


    而且,在 HTML 4 specifications :

    外部图像、小程序、, 表格处理程序、样式 图纸等始终由 乌里。解决了相对URI 来自各种各样的来源。这个 基本元素允许作者指定

    当存在时,基本元素必须 出现在HTML的标题部分 指外部源。路径 数据库指定的信息 元素只影响

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
       "http://www.w3.org/TR/html4/strict.dtd">
    <HTML>
     <HEAD>
       <TITLE>Our Products</TITLE>
       <BASE href="http://www.aviary.com/products/intro.html">
     </HEAD>
    
     <BODY>
       <P>Have you seen our <A href="../cages/birds.gif">Bird Cages</A>?
     </BODY>
    </HTML>
    

    相对URI“./cages/birds.gif”将解析为:

    http://www.aviary.com/cages/birds.gif
    
    推荐文章