如何在Kitura中测试CORS?

时间:2016-12-21 20:34:42

标签: linux swift kitura

任务

在Bluemix上托管的Kitura服务器上启用CORS。

开发机器
OS X 10.12.1,Swift 3.0.2版。

部署到
Ubuntu 14.04,Swift 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)

首饰

  1. 邮递员对OPTIONS的{​​{1}}请求会返回以下标题:

    • 连接→保持活力
    • 内容类型→text / html
    • 日期→2016年12月21日星期三19:12:04 GMT
    • 转移编码→分块
    • X-Backside-Transport→OK OK
    • X-Global-Transaction-ID→4203875359
  2. 该应用通过Test CORS的测试将https://adeptness.eu-gb.mybluemix.net请求传递给GET,并报告以下公开的响应标头:

    • 内容类型→text / html
  3. 问题

    我不完全确定CORS是否设置正确。为什么在查找#1中的https://adeptness.eu-gb.mybluemix.net响应中没有X-Access-Token标头?

    我已经阅读了有关CORS的Mozilla文档,虽然我确实理解浏览器在飞行前请求并阻止所有CORS请求,除非服务器明确允许。我无法找到的是关于如何测试CORS服务器端的任何资源,而无需模拟测试"前端。

    如何测试CORS?

1 个答案:

答案 0 :(得分:2)

正如你所说,一般而言,CORS是告诉浏览器允许哪些Cross Origin请求,使开发人员能够打破旧的JavaScript沙箱,将有限的XHR请求限制在加载HTML页面的同一服务器上。

并非所有跨源请求都是允许的。 Kitura-CORS软件包允许服务器开发人员向浏览器提供有关允许哪种请求的信息。同样,这完全取决于发送服务器的请求以及关于响应的请求。

exposedHeaders参数使服务器开发人员能够控制允许发送到服务器的请求中的HTTP头。

要测试你需要有一对服务器加载一个简单的网页,其中有一个JavaScript向第二个服务器发出XHR请求。这两台服务器需要位于不同的域中(即一台本地笔记本电脑和第二台服务器在Bluemix上)。如果第二个服务器在其响应中传递了它随请求收到的标题,您将能够看到传递的内容。