text/javascript
クロスドメイン ポリシーを回避するために、JSONP を使用してデータをコールバックにラップし、mimetype する必要があります。
.net と通信する JSONP を使用した JQuery の良い例は何ですか?
タイトルには .net と記載されていますが、サーバー側の環境はクライアントの実装には関係ありません。
実行可能な代替手段は、CURL (またはその他の http lib) を使用してリクエストを転送し、スクリプトの XHR リクエストへの応答を出力する独自のドメインにサーバー側スクリプトをセットアップすることです。curl やその他のサーバー側の http lib はクロスドメイン ポリシーに拘束されないため、この方法では、クライアント側のスクリプトとアクセスしようとしているリモート ドメインの間にキャッチオールが設定されます。
編集
投稿を送信する必要があるとあなたが言っているので、2 番目のアプローチについて詳しく説明します。概念実証として、PHP を使用して何を行う必要があるかを詳しく説明しますが、この一般的な考え方を別のスクリプト言語に移植するのは簡単なはずです。
であなたのドメインでキャッチオールスクリプトを作成できるとしましょうwww.yourdomain.com/data.php
。そのファイルのロジックは、http リクエストからすべての投稿変数を読み取り、それらを新しいドメインへのリクエストとして curl インスタンスに入れ、そのリクエストを実行し、次に要求の応答が私の ajax XHR に返される出力は、そもそも仲介者が存在しなかったように見えます。
私は、jscol の OOCurlを使用して、curl の構文を少しきれいにするのが好きです。
<?
reqire_once('path/to/oocurl.php');
$c = new Curl('voip.otherdomain.com/api'); // instantiate with the url endpoint for the api
$c->post = True;
// Set the postfields for the child request to the same as the parent
$c->postfields = $_POST;
//Bust if there is an error and output that instead
$c->failoneerror = True;
$response = $c->exec();
if($c->errno()){
//there was an error, what was it?
header('Status:' . $c->info(CURLINFO_HTTP_CODE));
echo $c->error();
}else{
//success, echo output
header('Content-type: application/json');
echo $response;
}
?>
この種のスクリプトに ajax リクエストを送信すると、CURL のコンストラクターで指定された他のドメインに透過的に渡されます。ここで、返される mimetype が json であると想定していることに注意してください。API に合わせてこれを調整する必要がある場合があります。
API の認証資格情報がある場合は、それらを追加のポスト変数として手動でリクエストにコーディングし、hmacを使用してエンドポイントを保護する必要があります。これは、クライアント/サーバー側の相互作用をどのように行っているかに本当に固有のものであり、リダイレクターの範囲から少し外れます...基本的には、サーバーで定義されたハッシュソルトがあり、投稿要求でダイジェストが送信されるようにしてください。第三者があなたの仲介エンドポイントに簡単に投稿できないようにするためです。
編集
誰かが Google から出くわした場合に備えて、このアプローチを独自に取り入れたライブラリを作成しました。ここで入手できます。