Javascript 如何使REST呼叫安全

Javascript 如何使REST呼叫安全,javascript,json,security,rest,Javascript,Json,Security,Rest,我正在使用JSON/JS/jquery使用REST方法调用一个web服务,我想知道是否有一种方法可以在不在源代码中公开API键的情况下调用该web服务。有人知道一种对公众隐藏API密钥并仍然进行调用的方法吗 我担心如果有人通过我的源代码,他们将能够使用我的API密钥。您可以将调用委托给自己的服务器,而不是: 浏览器使用API密钥向外部REST API发送HTTP请求 外部RESTAPI向浏览器发送响应 你有 浏览器向服务器发送HTTP请求 您的服务器使用API密钥向外部REST API发送HTT

我正在使用JSON/JS/jquery使用REST方法调用一个web服务,我想知道是否有一种方法可以在不在源代码中公开API键的情况下调用该web服务。有人知道一种对公众隐藏API密钥并仍然进行调用的方法吗


我担心如果有人通过我的源代码,他们将能够使用我的API密钥。

您可以将调用委托给自己的服务器,而不是:

  • 浏览器使用API密钥向外部REST API发送HTTP请求
  • 外部RESTAPI向浏览器发送响应
  • 你有

  • 浏览器向服务器发送HTTP请求
  • 您的服务器使用API密钥向外部REST API发送HTTP请求
  • 外部RESTAPI向服务器发送响应
  • 您的服务器向浏览器发送响应


  • 不过,我不确定是否有人“窃取”了您的API密钥是一个大问题,因为API密钥(例如Google)经常与特定域关联。

    无法将API密钥发送到客户端,使其可用,也无法将其公开。您更可能想要的是有一个转换层,允许外部(未验证的)客户端对公开的端点发出请求,然后使用某种逻辑验证请求,然后传递请求


    API密钥通常供您作为合作伙伴使用,而不是分发;这是避免分发它们的方法。

    您的API请求需要从浏览器/客户端执行的原因是什么?因此页面呈现后会进行调用。+1。代理可能是一个很好的解决方案,尽管我怀疑一开始就有问题。@cfarm我不会这么说。你怎么会这么想?您只是代理请求,而不是更改语义或结构。因为SOAP已经在后端?这样,它就不再是服务器->浏览器->服务器->服务->服务器->浏览器,而是服务器->服务->服务器->browser@cfarm我不认为肥皂和它有任何关系。您正在向第三方API发送REST请求。如果您使用服务器代理来自浏览器的REST请求,那么浏览器请求服务器请求第三方URL非常简单。肥皂是不需要这个,更重的重量,真的不是工作的正确工具。但正如我(和其他人)所说,保护您的API密钥真的是一个问题吗?@cfarm(根据对您评论的编辑)您调用的web服务是REST还是SOAP服务?我不明白为什么
    服务器→ 服务→ 服务器→ 无法使用REST完成浏览器
    。我也不知道它与浏览器有什么关系。如果服务器独立于浏览器发出web服务请求,但使用该数据向浏览器发送任何信息,那么浏览器根本不关心数据来自何处……对吗?