some.js は XMLHttpRequest を使用してデータを abc.com に投稿できますか? つまり、abc.com から Javascript をロードしたので、abc.com は暗黙的に信頼されているのでしょうか?
いいえ、スクリプトは別のドメインに読み込まれるため、アクセスできません...
データ ソースが信頼できる場合は、おそらく JSONP の方が適切なオプションです。JSONP では、SRC を別のドメインに設定し、コールバックをクエリ文字列のパラメーターとして設定して、ページに新しい SCRIPT 要素を動的に追加します。例えば:
function getJSON(URL,success){
var ud = 'json'+(Math.random()*100).toString().replace(/\./g,'');
window[ud]= function(o){
success&&success(o);
};
document.getElementsByTagName('body')[0].appendChild((function(){
var s = document.createElement('script');
s.type = 'text/javascript';
s.src = URL.replace('callback=?','callback='+ud);
return s;
})());
}
getJSON('http://YOUR-DOMAIN.com/script.php?dataName=john&dataAge=99&callback=?',function(data){
var success = data.flag === 'successful';
if(success) {
alert('The POST to abc.com WORKED SUCCESSFULLY');
}
});
そのため、PHP/CURL を使用して abc.com ドメインに投稿し、JSONP 形式で応答を出力する独自のスクリプトをホストする必要があります。
私はPHPがあまり得意ではありませんが、次のようなものかもしれません:
<?php
/* Grab the variables */
$postURL = $_GET['posturl'];
$postData['name'] = $_GET['dataName'];
$postData['age'] = $_GET['dataAge'];
/* Here, POST to abc.com */
/* MORE INFO: http://uk3.php.net/curl & http://www.askapache.com/htaccess/sending-post-form-data-with-php-curl.html */
/* Fake data (just for this example:) */
$postResponse = 'blahblahblah';
$postSuccess = TRUE;
/* Once you've done that, you can output a JSONP response */
/* Remember JSON format == 'JavaScript Object Notation' - e.g. {'foo':{'bar':'foo'}} */
echo $_GET['callback'] . '({';
echo "'flag':' . $postSuccess . ',";
echo "'response':' . $postResponse . '})";
?>
したがって、制御できるサーバーは、クライアントと abc.com の間の媒体として機能し、応答を JSON 形式でクライアントに送り返し、JavaScript が理解して使用できるようにします...