Как проверить CORS в Китуре?

Задача

Чтобы включить 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)

Результаты

  1. Запрос 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
  2. Приложение проходит тест на странице Test CORS для запроса GET к https://adeptness.eu-gb.mybluemix.net и сообщает следующие открытые заголовки ответа:

    • Content-Type → text/html

Проблема

Я не совсем уверен, правильно ли настроен CORS. Почему нет заголовка X-Access-Token в ответе OPTIONS в выводе №1?

Я прочитал документацию Mozilla по CORS, и хотя я понимаю, что браузеры предварительно отправляют запросы и блокируют все запросы CORS, если это явно не разрешено сервером. Чего я не смог найти, так это какого-либо ресурса о том, как проводить тестирование на стороне сервера CORS без необходимости макетировать «тестовый» интерфейс.

Как следует проводить тестирование CORS?


person Community    schedule 21.12.2016    source источник


Ответы (1)


Как вы сказали, в целом CORS сообщает браузеру, какие запросы Cross Origin разрешены, позволяя разработчику выйти из старой песочницы JavaScript, которая ограничивала запросы XHR к тому же серверу, с которого была загружена HTML-страница.

Не все запросы перекрестного происхождения разрешены. Пакет Kitura-CORS позволяет разработчику сервера предоставлять браузерам информацию о том, какие запросы разрешены. Опять же, речь идет о запросах, отправляемых на сервер, а не об ответах.

ПараметрposedHeaders позволяет разработчику сервера контролировать, какие заголовки HTTP могут быть в запросе, отправляемом на сервер.

Для тестирования вам нужно иметь пару серверов с простой веб-страницей, загруженной с одного, с JavaScript, который отправляет запрос XHR на второй сервер. Два сервера должны находиться в разных доменах (т. е. один локально на вашем ноутбуке, а второй — на Bluemix). Вы сможете увидеть, что было передано, если второй сервер передает в своих ответах заголовки, которые он получил с запросом.

person skallner    schedule 10.01.2017
comment
Благодарю за разъяснение. Ваше здоровье! - person ; 01.02.2017