2012-03-27 5 views
0

クライアントとしてjsを、APIのサーバー側にPHPを使ってREST APIを使用するために私が使用できる解決方法を知りたいですか?
私はiFrame、チャンネルファイル、およびカスタムヘッダーを使用しようとしました。
しかし、何も働いていません。
- どうすればいいのか教えてください。
ありがとうございます。私はすでに試してみました私のREST APIと同じオリジンポリシー

もの:
1)のiFrame:

$(document).ready(function(){ 

$("#fff").contents().find("#rrr").submit(); 
})(jQuery); 
------------- 
<body> 
    <p id="hello">Hello World</p> 
    <iframe id="fff" src="#"> 
    hi 
    <form id="rrr" action="http://mydomain/rest/rest.php" method="get"> 
     <input type="text" value="testy" name="check" /> 
    </form> 
    </iframe> 
</body> 

- >何も返しません。

2)チャンネルファイル:
サーバー上のファイル(JS):(conjs.js)

function getDev(callback){ 

    jQuery.ajax({ 
     url: 'rest.php', 
     type: 'GET', 
     data: 'name=John', // or $('#myform').serializeArray() 
     success: function(data) { 
      callback('Get completed '+data); 
     } 
    }); 
} 
------------------ 
<!DOCTYPE html> 
<html> 
<head> 
<script class="jsbin" src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script> 
<meta charset=utf-8 /> 
<title>JS Bin</title> 
<!--[if IE]> 
    <script src="http://html5shiv.googlecode.com/svn/trunk/html5.js"></script> 
<![endif]--> 
<style> 
    article, aside, figure, footer, header, hgroup, 
    menu, nav, section { display: block; } 
</style> 
    <script src="http://mydomain/rest/conjs.js"></script> 
</head> 
<body> 
    <p id="hello">Hello World</p> 
    <script type="text/javascript"> 
getDev(function (response) { 
    alert(response); 
}); 
</script> 
</body> 
</html> 

- >は何も返しません。

3)PHPのヘッダ:

switch ($_SERVER['HTTP_ORIGIN']) { 
    case 'http://jsbin.com': case 'https://jsbin.com': 
    header('Access-Control-Allow-Origin: '.$_SERVER['HTTP_ORIGIN']); 
    header('Access-Control-Allow-Methods: POST, GET, OPTIONS'); 
    header('Access-Control-Max-Age: 1000'); 
    header('Access-Control-Allow-Headers: Content-Type'); 
    break; 
} 

- >何も返しません。

これまでは機能していませんでした。

+0

唯一の実際の解決策は、リクエストをサーバー側で他のAPI(jsbin)に転送し、結果を返す、サーバー上でホストされているプロキシです。これはさらに安全です。 – mellamokb

+0

@mellamokbあなたは本当ですか?これはユーザーにとってより難しいので、facebook js sdkはどのようにそれをしますか? – funerr

+1

私はあなたがしていることを誤解しました。第三者のユーザーにjs apiを提供していますか?次に、JSONPまたはIFrameの埋め込みが必要です。 http://stackoverflow.com/questions/4007018/why-does-new-facebook-javascript-sdk-not-violate-the-same-origin-policyを参照してください。 – mellamokb

答えて

0

Reverse Proxyを設定すると役立ちます。リバースプロキシは、要求が同じサーバーから来たように見せることによって、同じ発信元ポリシーを回避するために使用されます。

関連する問題