默认情况下,客户可以/无法访问RESTful Web服务?

时间:2014-08-04 20:03:47

标签: node.js api rest cors

我目前正在开发一种API,将在几周内投入生产。我对REST比较陌生,开始阅读有关CORS的内容 - 并意识到它可能会影响我。

客户可以访问REST服务的条件是什么?我一直在同一台服务器上使用样本html / js,并通过Postman(一个谷歌浏览器插件)来访问我的API。到目前为止我没有遇到任何问题。

当API上线时,它将在' api.myserver.com'托管。一开始,请求将来自app.myOTHERserver.com'。如果我不使用像JSONP这样的CORS友好方法或特殊的访问控制'那么这些请求是否会被拒绝?允许我的域名的标题?

如何从其他非浏览器客户端访问其他API?比如C#应用程序?默认情况下是否允许这些请求?

假设我确实需要添加' access-control'标题服务器端,为了在我的API上线时允许上述场景,让你的web服务器(在我的情况下是NGINX)处理标题更好(性能方面),还是应该通过PHP或NodeJS添加它们?

2 个答案:

答案 0 :(得分:1)

这更多是关于Web浏览器应用的same-origin policy,而不是一般的RESTful API。

如果您的API旨在供部署在与API不同的源主机/端口上的Web应用程序使用,那么您有以下选项:

  1. 使用适当的标头进行回复,以便CORS等技术能够正常工作。
  2. 通过将来自Web服务器的API请求代理到API服务器,让提供Web内容的Web服务器(在您的示例中为app.myOTHERserver.com)也可以处理您的REST API请求。例如,您可以在网址/api下的Web服务器上公开您的API,然后只需设置一个Web代理配置,将该URL下的请求转发给您的API服务器。
  3. 使用JSONP或其他技术。
  4. 如果您的API将由非Web应用程序使用,您无需担心。这只是浏览器在运行JavaScript代码时应用的限制,以确保用户无意中点击了网络钓鱼链接,其中有一些hackery试图将他们的PayPal密码发送给平壤。

答案 1 :(得分:0)

  

当API上线时,它将在' api.myserver.com'托管。   一开始,请求将来自app.myOTHERserver.com'。   如果我不使用CORS友好的方法,这些请求是否会被拒绝   像JSONP或特殊的访问控制'允许我的域名的标题?

您可以指定哪些客户端可以访问您的Web服务。假设您正在使用Express:How to allow CORS?