2012-01-02 2 views
1

サードパーティのhtmlファイルにトラッキングピクセルを置いて、javascriptを返すサーブレットを呼び出します。このjavascriptは、ローカルストレージから値を取得し、それを他のサーブレットに報告する必要があります。は、リモートサーバーからjavascriptを実行できるピクセルをトラッキングしていますか?

トラッキングピクセル:例えば

var value= localStorage.getItem("myLocalStorageKey"); 
var serverUrl = "www.myserver.com/myservlet?value=" + value; 
var xmlHttp = new XMLHttpRequest(); 
xmlHttp.open("GET", serverUrl, true); 
xmlHttp.send(""); 

srcプロパティではJavaScriptを処理することを期待されていないので、これは動作しません:

<img src="http://myserver.com/report" width="1" height="1"> 

レポートサーブレットは、次のJavaScriptを返します。 これを達成する方法はありますか? サードパーティのHTMLページからjavascriptを呼び出すと、その値がサードパーティのドメインではなく "myserver.com"ドメインから入力されたため、ローカルストレージから値を取得できなくなります。

おかげで、 ダニ

+0

同じ起源のセキュリティポリシーは、あなたがやっていることを正確に止めるように設計されています。他のドメインは、他のドメインで利用できないと思われるローカルプロパティを詮索しています。 – jfriend00

答えて

3

それは、期間が動作しません。 Javascrsiptには、xmlhttprequestsの「同じ起点」セキュリティポリシーがあります。このスクリプトのソースはあなたのサーバーなので、あなた以外は他のサーバーに接続することはできません。

あなたは多少、代わりにJSONPを使用して、それを回避することができ、動的/ページのDOMにセットフル<script>...</script>タグ/コードを挿入構築しますが、その後、あなたはまだあなたが<img>を経由して、これをロードしているという事実で立ち往生していますタグは、コードを実行しません。

代わりに、

<script type="text/javascript" src="http://yourserver/track_me.js"></script> 

ような何かを行うことを検討し、そのスクリプトとJSONP作成コードを果たします。

+0

トラッキングピクセルの注入方法を制御できる場合は、代わりにスクリプトタグを挿入することができます。 –

+0

src = "http://yourserver/track_me.js"でスクリプトを呼び出すと、 はJavaScriptが "yourserver"ドメインまたはhtmlページのドメインで実行されますか? つまり、javascriptは "yourserver"ドメインによって入力されたローカルストレージから値を取得できますか? – user686098

+0

JSは常にローカルで実行されますが、元のサーバーの権限/アクセス許可で実行されます。サーバーからjsをロードすると、サーバーからも送信されたもので何かを行うことができます。他のサーバーからロードされている場合は、サーバーの内容に全く触れることができません。 –