3

イメージタグを作成してDOMに挿入することにより、javascriptでピクセルイメージを作成しています。

タグは次のようになります。

<img style="height:0;visibility:hidden;display:none;" src="http://xyz.com/pixel.aspx">

ご覧のとおり、このタグは実際に ASP.Net ページを呼び出します。このページは、いくつかの処理を行い、次のようにピクセルを書き戻します。

byte[] _imgbytes = Convert.FromBase64String("R0lGODlhAQABAIAAANvf7wAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw==");
Response.ContentType = "image/gif";
Response.AppendHeader("Content-Length", _imgbytes.Length.ToString());
Response.Cache.SetLastModified(DateTime.Now);
Response.Cache.SetCacheability(HttpCacheability.Public);
Response.BinaryWrite(_imgbytes);

私が必要としているのは、小さなデータ (ピクセル要求の前に JavaScript で生成された GUID 値) をサーバーに渡すか、一部のデータ (ピクセル aspx コードで生成された別の GUID) をブラウザーに戻す方法です。 JavaScriptで拾う方法。

警告:

  1. ピクセルはキャッシュ可能である必要があるため、クエリ文字列を使用できません。クエリ文字列が異なる場合、ピクセルは後続のリクエストでブラウザのキャッシュから取得されません (ファイル名は異なります)。
  2. Cookie を使用できません。ピクセル リクエストはアプリケーションとは異なるルート ドメインにあり、サード パーティの Cookie が無効になっている場合にこれが機能する必要があります。
  3. クロスドメインの問題を心配したくないため、AJAX を使用できません
4

2 に答える 2

0

私はこの問題を自分で解決しました。

画像の代わりに、リモート スクリプト リクエストを使用しました。したがって、挿入されたタグは次のようになります。

<script async src="http://xyz.com/tracking.aspx"></script>

次に、私のaspxには、次のものがあります。

string script = "(function(){Complete('" + guidValue + "');})();";

Response.ContentType = "application/javascript";
Response.Cache.SetLastModified(DateTime.Now);
Response.Cache.SetCacheability(HttpCacheability.Public);
Response.Write(script);

応答がブラウザーに返されると、Completeメソッド (ページによって既に読み込まれている JavaScript ファイルに存在する) が私の guid パラメーターで実行されます。これにより、私のページが GUID に完全にアクセスできるようになります。

また、リクエスト URL は変更されないため、スクリプトはブラウザによって適切にキャッシュされます。

出来上がり。

于 2012-08-10T21:34:28.720 に答える
0

を使用しhttp://xyz.com/pixel.aspx/your-guid-hereます。次に、Web サーバーやアプリケーションを構成するだけで、404 エラーが発生せずに aspx コードが実行されます。

于 2012-08-09T22:05:36.390 に答える