Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/api/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 客户可以/可以';默认情况下,您不能访问RESTful web服务吗?_Node.js_Api_Rest_Cors - Fatal编程技术网

Node.js 客户可以/可以';默认情况下,您不能访问RESTful web服务吗?

Node.js 客户可以/可以';默认情况下,您不能访问RESTful web服务吗?,node.js,api,rest,cors,Node.js,Api,Rest,Cors,我目前正在开发一个API,它将在几周内投入生产。我对休息还比较陌生,开始阅读关于CORS的书籍,并意识到它可能会影响我 客户在什么条件下不能访问REST服务?我一直在同一台服务器上使用示例html/js,并通过Postman(谷歌chrome插件)访问我的API。到目前为止,我还没有遇到任何问题 当API上线时,它将托管在“API.myserver.com”上。开始时,请求将来自“app.myOTHERserver.com”。如果我不使用CORS友好的方法,如JSONP或允许我的域的特殊“访问控

我目前正在开发一个API,它将在几周内投入生产。我对休息还比较陌生,开始阅读关于CORS的书籍,并意识到它可能会影响我

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

当API上线时,它将托管在“API.myserver.com”上。开始时,请求将来自“app.myOTHERserver.com”。如果我不使用CORS友好的方法,如JSONP或允许我的域的特殊“访问控制”头,这些请求会被拒绝吗

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

假设我确实需要在服务器端添加“访问控制”标题,以便在我的API上线时允许上面描述的场景,那么让您的web服务器(在我的情况下是NGINX)处理标题是更好的(性能方面),还是应该通过PHP或NodeJS添加标题

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

您可以指定哪些客户端可以访问扩展的web服务。假设您使用的是Express:

这更多的是关于web浏览器应用的API,而不是一般的RESTful API

如果您的API打算由部署在不同于API的源主机/端口上的web应用程序使用,则您有以下选项:

  • 使用适当的标题进行响应,允许使用类似于工作的技术
  • 让提供您的web内容的web服务器(在您的示例中,
    app.myOTHERserver.com
    )也通过代理您从web服务器到API服务器的API请求来处理您的REST API请求。例如,您可以在web服务器上的URL
    /API
    下公开API,然后只需设置一个web代理配置,将该URL下的请求转发到API服务器
  • 使用JSONP或其他技术

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

    这是一个相当广泛的限制。您是否有一个集成环境,可用于部署API的实际FQDN?如果不是的话,我建议研究一下——这正是集成环境在测试中的用途。这是真的,我也这么做了——尽管它还没有完全准备好。我只是想在手术前做点腿部运动谢谢。这是我一直在寻找的,而且似乎不太宽泛。您认为在性能方面,通过web服务器在响应标题(或任何地方)中添加经批准的域比通过我的应用程序所用的语言添加域好吗?我敢打赌,性能差异可以忽略不计。一个更重要的问题是你要决定哪里最适合你的需要。如果它在您的代码中,那么您可以毫无顾虑地切换web服务器技术,但是对于DevOps来说,通过强制重新编译应用程序代码来更改其行为可能会更难。