簡體   English   中英

默認情況下,哪些客戶端可以/不能訪問RESTful Web服務?

[英]What clients can / can't access a RESTful web service by default?

我目前正在開發一個API,它將在幾周內投入生產。 我對REST比較陌生,開始閱讀有關CORS的信息-並意識到這可能會影響我。

客戶端無法訪問REST服務的什么條件? 我一直在同一台服務器上使用示例html / js,並通過Postman(一種Google chrome插件)來訪問我的API。 到目前為止,我還沒有任何問題。

該API上線后,將托管在“ api.myserver.com”上。 最初,請求將來自“ app.myOTHERserver.com”。 如果我不使用允許我的域的JSONP之類的CORS友好方法或特殊的“訪問控制”標頭,是否會拒絕這些請求?

從其他非瀏覽器客戶端訪問rest API怎么辦? 如C#應用程序? 默認情況下是否允許這些請求?

假設我確實需要在服務器端添加“訪問控制”標頭,以允許在我的API啟用時上述情況,讓您的Web服務器(在我的情況下為NGINX)處理標頭更好(在性能方面) ,還是應該通過PHP或NodeJS添加它們?

通常,這 Web瀏覽器應用的同源策略相比,與RESTful API相比更多。

如果您的API打算供與API不在其他原始主機/端口上部署的Web應用程序使用,那么您可以使用以下選項:

  1. 響應適當的標頭,以使諸如CORS之類的技術能夠正常工作。
  2. 通過代理從Web服務器到API服務器的API請求,也讓提供您的Web內容的Web服務器(在您的示例中為app.myOTHERserver.com )也處理您的REST API請求。 例如,您可以在Web服務器上的URL /api下公開您的/api ,然后只需設置一個Web代理配置即可將該URL下的請求轉發到您的API服務器。
  3. 使用JSONP或其他技術。

如果您的API將由非Web應用程序使用,則無需擔心。 這只是瀏覽器在運行JavaScript代碼時施加的限制,以確保用戶沒有無意中單擊帶有某些黑客的網絡釣魚鏈接,該鏈接試圖將其PayPal密碼發送給平壤。

該API上線后,將托管在“ api.myserver.com”上。 最初,請求將來自“ app.myOTHERserver.com”。 如果我不使用允許我的域的JSONP之類的CORS友好方法或特殊的“訪問控制”標頭,是否會拒絕這些請求?

您可以指定哪些客戶端可以擴展訪問您的Web服務。 假設您使用Express: 如何允許CORS?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM