基于Swift的Web框架Vapor2.0文档(翻译)HTTP-CORS

转载请附原文链接:http://blog.fandong.me/2017/08/21/iOS-SwiftVaporWeb28/

前言

之前一直有做Java后台开发的兴趣,可是想到要看好多的Java教程,作为一个iOS开发者,我放弃了,
后来从朋友韩云智VL那里知道了这个框架,竟是用Swift写的,不得不说,它燃起了我的兴趣。
Vapor是一个基于Swift开发的服务端框架,可以工作于iOS,Mac OS,Ubuntu。
为了配合Swift部署到服务器,我把ECS的服务器系统改为Ubuntu16.04。

Vapor 2.0 - 文档目录
以下文字翻译自Vapor Docs/HTTP/CORS

CORS

默认情况下,Vapor提供了一个实现源代码资源共享(CORS - Cross-ORigin Resource Sharing)叫CORSMiddleware中间件
CORS - Cross-ORigin Resource Sharing是一种能够跨平台的开源的访问规范,如果你提供公共内容,请考虑使用CORS打开通用的JavaScript浏览器访问,http://enable-cors.org/
想要了解更多关于中间件的信息,请访问文档中的 中间件章节


图片作者: 维基百科

基础

首先,添加CORS中间件到你的Droplet中间件数组中.

Config/droplet.json
{
    ...,
    "middleware": [
        ...,
        "cors",
        ...,
    ],
    ...,
}

下次你启动你的应用程序的时候,系统将提示你添加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或类似的,否则,正确的请求头可能不会添加到响应中.

CORSMiddleware具有适合绝大多数用户的默认配置,它们的值像下面这样

  • 允许原始的
  • 请求中的原始请求头
  • 允许的方法
  • GET,POST,PUT,OPTIONS,DELETE,PATCH
  • 允许的请求头
  • Accept,Authorization,Content-Type,Origin,X-Requested-With

高级

高级用户可以自定义所有的设置和预设,有两种方法,可以通过编程方式创建和配置CORSConfiguration文件,也可以将你的配置放入Vapor的JSON配置文件.
看看如下的设置的两种方法.

配置

CORSConfiguration结构体用于配置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")

然后设置custom-cors到你的Droplet的中间件数组.

Config/droplet.json
{
    ...,
    "middleware": [
        ...,
        "custom-cors",
        ...,
    ],
    ...,
}

笔记
有关设置CORSConfiguration可用值的更多信息,请参阅源代码中的文档.

你可能感兴趣的:(基于Swift的Web框架Vapor2.0文档(翻译)HTTP-CORS)