0

まず、私は codeigniter を使用しており、PhilSurgeon codeigniter-curl を使用しています: http://philsturgeon.co.uk/code/codeigniter-curl

別のドメインからの応答ヘッダーから Set-Cookies をカールして取得しようとしています。コードは以下です

$url = 'http://ib.adnxs.com/ptv?id=1403122&size=1x1';

$this->curl->create($url);
$this->curl->http_header('User-Agent', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_6_8');

$options = array(CURLOPT_HEADER => 1);
$this->curl->options($options);
$vast= $this->curl->execute();

echo "<pre>"; print_r($vast);

これを返します:

Set-Cookie: sess=1; path=/; expires=Fri, 24-May-2013 01:58:10 GMT; domain=.adnxs.com; HttpOnly
Set-Cookie: icu=ChIItcsCEAoYASABKAEwsu_1jAUQsu_1jAUYAA..; path=/; expires=Wed, 21-Aug-2013 01:58:10 GMT; domain=.adnxs.com; HttpOnly
Content-Type: text/xml
Set-Cookie: anj=Kfu=8fG1aPCxrx)0s]#%2LcYUiWd4r$[-T_g+2'ti*zYQaYhJGno9P8*w:M5Uy0Hg2:=*oU[fy9; path=/; expires=Wed, 21-Aug-2013 01:58:10 GMT; domain=.adnxs.com; HttpOnly

しかし、firebug を使用したこのURLから、 4 つの Set-Cookies ヘッダー応答があることがわかります。

Set-Cookie:icu=ChIItcsCEAoYBSAFKAUwhND1jAUQhND1jAUYBA..; path=/; expires=Wed, 21-Aug-2013 00:51:16 GMT; domain=.adnxs.com; HttpOnly
Set-Cookie:anj=Kfu=8fG1aPDYS3+0s]#%2LcYUiWd4r$[-T_g+2'thuA$jWEA)yIwtO#ou!><v1GC]*h)%B*hFeR*i`dzw@x-0CY_hN>8<=/=PpF>B2sEM:U9)Egw$gpK<rU3V2sTQBPSK2CBFmAZ4fxWRa/zdHI[^``z>tsw['ZH`CLcww-vV^ufhcR)XmgkjKre#dUU5QfVO.L4fG9GFBu=<jK(f6singv3mi%6gt$7LnUry9e#5x9U`r72%WaCxZpz7-]WIMUV)VDDCc<SUs06To>Gz$A>!A#UF?AH^u[Op<V1s>I#n[aDEPs:sNe8^J#UA<zF-Jik).@gDsrSxfhcQju>xP$yFLD=::tzzS/UTdX!C/=v7)6Fp'>c:%:rUn#/mTw`N#7U9(rwFXkmv^qM'0_QMX_jew(sDj(>a@s0XLV(Y%hCGZ`WDyVH>**Uy08b!:1hy:3!?k; path=/; expires=Wed, 21-Aug-2013 00:51:16 GMT; domain=.adnxs.com; HttpOnly
Set-Cookie:uuid2=3617392369395966810; path=/; expires=Wed, 21-Aug-2013 00:51:16 GMT; domain=.adnxs.com; HttpOnly
Set-Cookie:sess=1; path=/; expires=Fri, 24-May-2013 00:51:16 GMT; domain=.adnxs.com; HttpOnly

Set-Cookie: uuid2 である最も重要な Cookie がありません。URLをカールする方法に関するコードに何か問題がありますか、それともカールパラメーターが不足していますか?

4

2 に答える 2

0

CURLOPT_HEADERはすべてのヘッダーを送信するため、すべての Cookie が送信されます。curl を使用してブラウザーとは異なるヘッダー/Cookie のセットを取得した場合、それは実際には別のセットを取得したためです!

Cookie のセットが異なる理由はいくつか考えられますが、最も一般的な理由は単純に、サーバーが curl 要求をブラウザーの要求と似ているとは見なさなかったため、この場合は別の Cookie のセットを送り返すことです。多くの場合、HTTP リクエストをブラウザのリクエストに似せて、サーバーが違いを認識しにくくすることで、この問題を解決できます。

于 2013-05-23T10:37:52.923 に答える
-1

サーバーには承認が必要なようです。すべてのブラウザのリクエスト (Firebug で作成されたリクエストを含む) は、認証フラグが設定されたセッションを使用します。ただし、スクリプトは (別のセッションを使用するため)許可されていないため、uuid2値は得られません。

于 2013-05-23T11:05:33.767 に答える