我正在尝试创建一个调用我网站API的Javascript客户端API服务。这将是跨域的,我知道这导致的问题。但是,我需要用户通过一些用户凭据发送(无论是用户名和密码编码显然是还是API密钥+秘密),以便我可以返回用户特定的详细信息。
我最初使用的是jsonp
数据类型,但这并不允许您设置任何自定义标头,因此将其排除在外。
我已经在网上搜索了一段时间而无法找到一个安全的方式来做这个跨域,有没有人有这方面的成功并可以给我一些建议?
更新:
我已经按照lu1s的建议尝试了以下代码,但是如错误功能所述,我收到了'boo'的警告..
$.ajax({
url: 'http://www.dotsandboxes.co.cc/__tests/cors.php',
type: 'GET',
dataType: 'json',
success: function() { alert('hello!'); },
error: function() { alert('boo!'); },
beforeSend: function (xhr) {
xhr.setRequestHeader('securityCode', 'Foo');
xhr.setRequestHeader('passkey', 'Bar');
}
});
由于
答案 0 :(得分:0)
你可以。尝试将Allow-Access-Control-Origin: *
添加到HTTP响应标头以及正确的内容类型。
尝试使用这样的简单PHP脚本:
<?php
header('Access-Control-Allow-Origin: *');
header('Content-type: text/json');
echo json_encode(array('success'=>true,'data'=>'foobar'));
?>
查看此网站以阅读有关跨源的更多信息:http://enable-cors.org/
关于身份验证,建议不要发送用户名或密码,即使它们已加密。如您所述,最好在URL中传递令牌。最好遵循http://oauth.net/2/等标准。