0

我正在尝试创建一个调用我网站 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');
    }
});

谢谢

4

1 回答 1

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/等标准。

于 2012-04-24T19:12:24.743 回答