如何允许其他站点从您的站点检索数据?

Posted

技术标签:

【中文标题】如何允许其他站点从您的站点检索数据?【英文标题】:How to allow other site retrieve data from your site? 【发布时间】:2015-02-17 15:58:01 【问题描述】:

详情

我是 RESTful API 和 Laravel 世界的新手。

但是“每个艺术家首先都是业余爱好者。-对吧?” 让我们进入正题。

我有 2 个网站。让我们称之为:

A B

网站B 有一个很好的列表,如果用户表+它的所有关系。

我想允许网站A 访问网站B 并加载那些不错的数据。

我从来没有这样做过。我假设逻辑是:

网站 A 需要某种 api_keys 才能访问网站 B。 那么在api_key匹配后,网站B会将数据以json文件的形式返回给网站A。 然后,A 网站将接收该 json 文件,并将它们加载到 html 中并显示它。

我的逻辑是否更接近?如果我错了,请纠正我。 :)

这是我尝试过的

在做了一些研究之后,我发现了这个site。我真的很喜欢它。我全部完成了。 现在,我对 RESTful API 有了更多的了解。

然后,我遇到了这个site。我找到了这个

filters.php

Route::filter('api', function() 

    // Fetch a user record based on api key
    $user = User::where('api_key', '=', Input::get('api_key'))
                ->take(1)
                ->get();

    if ($user->count() > 0) 
        Auth::onceUsingId($user[0]->id); // Authorize the user for this one request
     else 
        return Response::view('errors.404', array(), 404)->header('Content-Type', 'application/json');
    
);

我注意到这个的 OP,存储在 users 表中的 api_key

我的问题

我需要像他那样做吗? 这是唯一的方法吗?

有没有更好/更简单的方法来做到这一点?

与其从数据库中获取 api_key,我可以手动将其设置为 random 数字 + 文本,例如 '21sdf364rt7y6r5ty1u28x1h8gt7yt2ert3654871' 吗?

api_key 会过期多久?甚至是expire 吗?我们怎么知道?

同样,我的主要goal 是允许网站A 访问网站B 的内容。

【问题讨论】:

【参考方案1】:

我的逻辑是不是更接近了?

是的,它足够接近。

因此,主要目标是访问网站 B 中的内容。您决定 B 中的内容是否为受限内容。

如果可以访问这些内容的用户有限,是的,您需要一个 api 密钥。

如果站点 B 的内容是公开的,您可以只打印 json 数据,而无需像 github 那样需要任何 api 密钥:https://api.github.com/users/github。

【讨论】:

你知道我可以从哪里开始吗?我试着用谷歌搜索了一段时间,但我真的找不到任何与api_key 相关的东西。 :(

以上是关于如何允许其他站点从您的站点检索数据?的主要内容,如果未能解决你的问题,请参考以下文章

Confluence 6 允许其他用户编辑站点欢迎消息

ruby 使用ruby从您的照片中删除位置信息和其他元数据

Django站点管理——管理站点

尽管在响应标头中将 iframe 选项设置为 Sameorigin,但允许其他站点嵌入视频

如何设置仅允许站点默认页面的robot.txt

使用站点地图进行两级水平导航