2017-09-03 87 views
-1

我知道我們無法訪問具有我們的不同域的API。但是,我看到很多人在安裝cors模塊中明確使用的API,然後使用它像這樣:app.use(cors())做什麼?

app.use(cors()); 

這是什麼實際上做?該功能如何在服務器上啓用cors

+3

https://github.com/expressjs/cors – Li357

+0

它有可能使[ CORS(https://en.wikipedia.org/wiki/Cross-origin_resource_sharing)? – Bergi

+0

好的,但要訪問其他API或被某人訪問?只要聲明這一行,我可以訪問網絡上的其他API? –

回答

1

摘要

正如你所說的,它使CORS(跨域資源共享)。爲了讓您的服務器可以被其他來源(域)訪問。

什麼它確實

調用use(cors())將使express server,以迴應預檢要求。

一個預檢請求基本上是一個OPTION在發送實際請求之前發送給服務器的請求,以便詢問服務器接受哪個來源和哪個請求選項。

所以CORS基本上是服務器發送給瀏覽器的一組頭文件。 調用cors()沒有額外的信息將設置以下缺省值:

{ 
    "origin": "*", 
    "methods": "GET,HEAD,PUT,PATCH,POST,DELETE", 
    "preflightContinue": false, 
    "optionsSuccessStatus": 204 
} 

這些被翻譯成這些標題:

Access-Control-Allow-Origin: * 
Access-Control-Allow-Methods: GET,HEAD,PUT,PATCH,POST,DELETE 
Status Code: 204 

這是什麼做的基本上是讓您的服務器訪問到該請求的任何域資源從您的服務器通過瀏覽器。

,您可以檢查所有的快遞cors配置在這裏:https://github.com/expressjs/cors

你也可以閱讀更多關於瀏覽器cors這裏: https://developer.mozilla.org/en-US/docs/Web/HTTP/Access_control_CORS