【发布时间】:2016-12-21 20:34:42
【问题描述】:
任务
在 Bluemix 上托管的 Kitura 服务器上启用 CORS。
开发机器
OS X 10.12.1,Swift 3.0.2 版。
部署到
Ubuntu 14.04,斯威夫特 3.0.1。
代码
我正在使用 IBM 的 Kitura-CORS 中间件来启用 CORS。
.Package(url: "https://github.com/IBM-Swift/Kitura-CORS", majorVersion: 1, minor: 4)
这是我配置应用程序的方式:
let options = Options(allowedOrigin: .all, credentials: true, exposedHeaders: ["X-Access-Token"])
let cors = CORS(options: options)
self.router.all(middleware: cors)
调查结果
-
Postman 对
https://adeptness.eu-gb.mybluemix.net的OPTIONS请求返回以下标头:- 连接 → 保持活动状态
- 内容类型 → 文本/html
- 日期 → 2016 年 12 月 21 日星期三 19:12:04 GMT
- 传输编码 → 分块
- X-Backside-Transport → OK OK
- X-Global-Transaction-ID → 4203875359
-
该应用通过Test CORS 的测试,通过
GET请求https://adeptness.eu-gb.mybluemix.net并报告以下公开的响应标头:- 内容类型 → 文本/html
问题
我不完全确定 CORS 是否设置正确。为什么在 Find #1 的 OPTIONS 响应中没有 X-Access-Token 标头?
我已经阅读了 Mozilla 关于 CORS 的文档,尽管我确实理解浏览器会在飞行前请求并阻止所有 CORS 请求,除非服务器明确允许。我找不到任何关于如何在无需模拟“测试”前端的情况下测试 CORS 服务器端的资源。
应该如何测试 CORS?
【问题讨论】: