哪些客户端默认可以/不能访问REST风格的Web服务?

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

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

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

从其他非浏览器客户端访问其余的API呢? 比如一个C#应用程序? 这些请求是否被默认允许?

假设我确实需要在服务器端添加“访问控制”头文件,为了允许上面描述的情况,当我的API上线时,让Web服务器(在我的情况下为NGINX)处理头文件(性能方面)更好,还是应该通过PHP或NodeJS添加它们?

这更多的是关于Web浏览器应用的同源策略 ,而不是RESTful API。

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

  1. 响应适当的头文件,使CORS等技术可以工作。
  2. 让提供Web内容的Web服务器(在您的示例中, app.myOTHERserver.com )通过将来自Web服务器的API请求传递到API服务器来处理您的REST API请求。 例如,您可以将您的API暴露在Web服务器的URL /api ,然后只需要设置一个Web代理configuration,将该URL下的请求转发到您的API服务器。
  3. 使用JSONP或其他技术。

如果您的API将被非Web应用程序使用,则无需担心。 这只是浏览器在运行JavaScript代码时所应用的一个限制,以确保用户不会无意中点击一个钓鱼链接,并试图将其PayPal密码发送到平壤。

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

您可以指定哪些客户端可以访问您的Web服务。 假设你使用Express: 如何允许CORS?