0

私が所有するページにバナーを作成する.jsプログラムを作成しました(各ページは異なるサーバーに投稿されます)。私は<script src="sample.com"></script>それを実行するために使用しています。問題は、私のスクリプトがいくつかの変数に対してメインサーバー (スクリプトを含むファイルがホストされている) を要求し、メッセージが表示されることです:

Origin http://php.kotarbki.plは Access-Control-Allow-Origin で許可されていません。

使用しているサーバーで Access-Control-Allow-Origin を有効にできませんが、それを回避する方法はありません。つまり、このスクリプトは要求しているサーバーでホストされているということです!

-------------SERVER1---------------server-first.com---------------

script.js ファイル:

var xmlhttp;
if (window.XMLHttpRequest)    {
   xmlhttp=new XMLHttpRequest();
}else{
   xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function(){
   if (xmlhttp.readyState==4 && xmlhttp.status==200){
      return xmlhttp.responseText.split("#");
   }
}
xmlhttp.open("GET","http://server-first.com/page.php?action=getVariables",true);
xmlhttp.send();

page.php ファイル:

if($_GET['action']=='getVariables'){
    echo $var1 . "#" . $var2;
}

-------------SERVER2---------------second-server.com---------------

<html>
<script src="server-first.com/script.js"></script>
</html>
4

2 に答える 2

0

次の手段は JSONP になる可能性があります。

私は通常それを使用しませんが、ここにアイデアがあります:

// dosomething.js -- script that's already on page
var doSomething = function (obj) {
    doStuff(obj);
};


// getdata.js script that's on another server
doSomething({ name : "...", id : 1234 });


var script = document.createElement("script"),
    parent = document.getElementsByTagName("script")[0].parentNode,
    src = "//otherserver.com/getdata.js";

script.src = src;
parent.appendChild(script);

これで、別のスクリプト ファイルを作成し、ソース (必要なクエリ データを追加できる場所) を設定し、それを最初のスクリプト要素が子である要素 (通常はヘッドまたはボディ) に追加しました。そのスクリプト ファイルが読み込まれると、doSomething()内部に入力した内容が呼び出されます。

したがって、これを論理的な結論に導くには、拡張機能を PHP として扱うようにサーバーを設定するか.js(または、ファイルが実際に存在しない場合は選択的に)、JavaScript 側から"//otherserver.com/getdata.php". 次に、php 側からアクセスして、必要なことを実行できます。エコーバックするだけecho "doSomething(" . ... .");";です。

クエリ文字列で「callback」パラメーターを受け入れることができるため、JS ページで起動する必要がある関数の名前をファイルに伝えることができます。

また、拡張機能content-typeを使用する場合は、ヘッダーが text や html ではなく、javascript に設定されていることを確認する必要があります。.php

于 2013-03-14T00:00:54.660 に答える
0

ドメイン名が同じでない場合、あるサイトから別のサイトにリクエストを行うことはできません。

于 2013-03-13T23:38:12.803 に答える