轉(zhuǎn)載請附原文鏈接:http://blog.fandong.me/2017/08/21/iOS-SwiftVaporWeb28/
前言
之前一直有做Java后臺(tái)開發(fā)的興趣,可是想到要看好多的Java教程,作為一個(gè)iOS開發(fā)者,我放棄了,
后來從朋友韓云智VL那里知道了這個(gè)框架,竟是用Swift寫的,不得不說,它燃起了我的興趣。
Vapor是一個(gè)基于Swift開發(fā)的服務(wù)端框架,可以工作于iOS,Mac OS,Ubuntu。
為了配合Swift部署到服務(wù)器,我把ECS的服務(wù)器系統(tǒng)改為Ubuntu16.04。
CORS
默認(rèn)情況下,Vapor提供了一個(gè)實(shí)現(xiàn)源代碼資源共享(CORS - Cross-ORigin Resource Sharing)叫CORSMiddleware中間件
CORS - Cross-ORigin Resource Sharing是一種能夠跨平臺(tái)的開源的訪問規(guī)范,如果你提供公共內(nèi)容,請考慮使用CORS打開通用的JavaScript瀏覽器訪問,http://enable-cors.org/
想要了解更多關(guān)于中間件的信息,請?jiān)L問文檔中的 中間件章節(jié)
圖片作者:維基百科
基礎(chǔ)
首先,添加CORS中間件到你的Droplet中間件數(shù)組中.
Config/droplet.json
{
...,
"middleware": [
...,
"cors",
...,
],
...,
}
下次你啟動(dòng)你的應(yīng)用程序的時(shí)候,系統(tǒng)將提示你添加Config/cors.json文件
Config/cors.json
{
"allowedOrigin": "*",
"allowedMethods": ["GET", "POST", "PUT", "OPTIONS", "DELETE", "PATCH"],
"allowedHeaders": [
"Accept",
"Authorization",
"Content-Type",
"Origin",
"X-Requested-With"
]
}
筆記
確保你在拋出其他中間件之前插入CORS中間件,想AbortMiddleware或類似的,否則,正確的請求頭可能不會(huì)添加到響應(yīng)中.
CORSMiddleware具有適合絕大多數(shù)用戶的默認(rèn)配置,它們的值像下面這樣
- 允許原始的
- 請求中的原始請求頭
- 允許的方法
-
GET,POST,PUT,OPTIONS,DELETE,PATCH - 允許的請求頭
-
Accept,Authorization,Content-Type,Origin,X-Requested-With
高級(jí)
高級(jí)用戶可以自定義所有的設(shè)置和預(yù)設(shè),有兩種方法,可以通過編程方式創(chuàng)建和配置CORSConfiguration文件,也可以將你的配置放入Vapor的JSON配置文件.
看看如下的設(shè)置的兩種方法.
配置
CORSConfiguration結(jié)構(gòu)體用于配置CORS中間件.你可以這樣來初始化
let config = try Config()
config.addConfigurable(middleware: { config in
return CORSConfiguration(
allowedOrigin: .custom("https://vapor.codes"),
allowedMethods: [.get, .post, .options],
allowedHeaders: ["Accept", "Authorization"],
allowCredentials: false,
cacheExpiration: 600,
exposedHeaders: ["Cache-Control", "Content-Language"]
)
}, name: "custom-cors")
然后設(shè)置custom-cors到你的Droplet的中間件數(shù)組.
Config/droplet.json
{
...,
"middleware": [
...,
"custom-cors",
...,
],
...,
}
筆記
有關(guān)設(shè)置CORSConfiguration可用值的更多信息,請參閱源代碼中的文檔.