2011-06-24 3 views
2

私は広告プラットフォームで作業しています。誰かがイメージをクリックすると、私はこのアクションを記録するために私のサーバーにリクエストを送り返したいと思う。私はこれのための事前生成されたURLを持っています。このURLにリクエストを送信すると、データがログに記録されます。ログデータのクロスドメインリクエストを送信

私の問題は、クライアントのドメインでjavascriptが実行されているのに対し、ログURLが自分のドメインにあるということです。ログインPHPスクリプト(Access-Control-Allow-Origin:*など)を変更することなく、この要求を新しいドメインに送信する方法はありますか?

私はデータをロギングするだけなので、サーバーは「OK」というテキスト(必要のない情報)を返信します。

+0

私はそれを認識していませんでした。ありがとう。あなたが答え(コメントではなく)を入れたら、それを受け入れるよ – matzahboy

+0

それはあなたのためにどのように働いているか教えてください... –

答えて

2

表示されます。私は問題が何かを見ていない...それは要求自体ではなく、同じ起源ポリシーで制限されている応答です。ドメインが一致しない場合、PHPスクリプトの応答にアクセスすることはできませんが、サーバーは別のドメインからのものであっても要求を通常どおり処理します。

2

これはハックですが、一般的に使用されています。クリックすると、srcにロギングURLを設定してイメージをDOMに追加します。友好的にするには、ロギングURLからの出力を1x1ピクセルイメージにします。あなたはGET文字列を介してパラメータを渡す必要がありますが、それは動作します。

0

クロスドメインスクリプトの制限はセキュリティ上の予防措置としてブラウザレベルで適用されるため、回避するための簡単なコード修正はありません。ただし、JSONP(パディング付きのJSON)を開始点として見ることができます。

0

src属性をロギングURLに設定して、非表示のiframeを作成することができます。これは、少なくとも上に挙げた画像アプローチと同じくらい醜いです。

2

ドメイン(画像またはiframe)にソースを持つ動的DOM要素をすべて作成し、ロギングデータをリクエストに追加します。

var logData = function(data){ 
if(data === undefined){ 
    return; 
} 

var img=document.createElement("img"); 
img.setAttribute('src', 'http://another.domain?'+data); 
img.setAttribute('height', '1px'); 
img.setAttribute('width', '1px'); 
document.body.appendChild(img);} 

あなたのログ要求は今、あなたはどのドメインにAjaxのHTTPリクエストを送信することができるはずIISログに

関連する問題