Задача
Чтобы включить CORS на сервере Kitura, размещенном в Bluemix.
Машина разработки
OS X 10.12.1, Swift версии 3.0.2.
Развернуто в
Ubuntu 14.04, Swift 3.0.1.
Код
Я использую промежуточное ПО Kitura-CORS
от IBM для включения 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)
Результаты
Запрос
OPTIONS
кhttps://adeptness.eu-gb.mybluemix.net
от Postman возвращает следующие заголовки:- Connection → Keep-Alive
- Тип содержимого → текст/html
- Дата → ср, 21 декабря 2016 г., 19:12:04 по Гринвичу
- Передача-кодирование → по частям
- X-Backside-Transport → OK OK
- X-Global-Transaction-ID → 4203875359
Приложение проходит тест на странице Test CORS для запроса
GET
кhttps://adeptness.eu-gb.mybluemix.net
и сообщает следующие открытые заголовки ответа:- Content-Type → text/html
Проблема
Я не совсем уверен, правильно ли настроен CORS. Почему нет заголовка X-Access-Token
в ответе OPTIONS
в выводе №1?
Я прочитал документацию Mozilla по CORS, и хотя я понимаю, что браузеры предварительно отправляют запросы и блокируют все запросы CORS, если это явно не разрешено сервером. Чего я не смог найти, так это какого-либо ресурса о том, как проводить тестирование на стороне сервера CORS без необходимости макетировать «тестовый» интерфейс.
Как следует проводить тестирование CORS?