首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >验证HTTP请求的来源

问验证HTTP请求的来源
EN

Stack Overflow用户
提问于 2019-04-11 15:18:04
回答 2查看 1.4K关注 0票数 0

场景:假设我有一个公开在公共IP+port上的RESTful http(s) API,现在我想做一个简单的前端,它与这个API交互。

Constraint:我希望使用GitHub页面来服务前端,并且我希望将存储库公开。

问题:是否有一种方法来设计API,以便只有来自gh页面网站的调用才能成功?也就是说,如果有人要分叉存储库并运行他们自己版本的前端,API会注意到调用不是来自“官方”gh页面站点吗?我真的很想知道,在API调用中是否有什么可以证明调用方是从某个特定的、预定的位置调用的。

如果前端可以私下托管,我可以在这两台服务器上存储一个共享秘密,并使用它进行身份验证,但理想情况下,我希望能够通过GitHub页面承载这个秘密(无需维护自己的服务器)。我能不能利用这个事实,h页的网站将有一个适当的证书,从吉突布?或者该证书是否同样适用于所有gh页站点,因此对确定来源没有帮助?

我希望问题是明确的,任何投入都会非常感谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-04-12 15:12:28

是否有一种方法来设计API,以便只有来自gh页面网站的调用才能成功?

不是的。

你所掌握的唯一信息是客户选择告诉你什么。

客户端可能会发送一个引用标头。一个定制的客户肯定会对此撒谎。

票数 0
EN

Stack Overflow用户

发布于 2019-04-12 14:29:34

假设请求来自gh-pages是错误的。请求是从用户的ip浏览器发出的。任何用户都将从自己的存储库或叉存储库加载浏览器中的网页内容,但是对API的请求将从用户的浏览器中创建。

默认情况下,浏览器将不允许在与加载html的域不同的域中请求api。因此,从https://pages.github.com/加载内容并请求您自己的私有服务器将失败,因为它将位于不同的域(请参阅CORS),但是有许多方法可以避免这种情况(参见GitHub页面上的跨源资源共享)。

因此,只要CORS对您来说就足够了(请参阅上面的链接如何启用对api的请求),您就不必担心了。否则,你能做的不多,只能授权客户。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55635946

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档