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;
}
- >何も返しません。
これまでは機能していませんでした。
唯一の実際の解決策は、リクエストをサーバー側で他のAPI(jsbin)に転送し、結果を返す、サーバー上でホストされているプロキシです。これはさらに安全です。 – mellamokb
@mellamokbあなたは本当ですか?これはユーザーにとってより難しいので、facebook js sdkはどのようにそれをしますか? – funerr
私はあなたがしていることを誤解しました。第三者のユーザーにjs apiを提供していますか?次に、JSONPまたはIFrameの埋め込みが必要です。 http://stackoverflow.com/questions/4007018/why-does-new-facebook-javascript-sdk-not-violate-the-same-origin-policyを参照してください。 – mellamokb