Дубликат ответа. Здесь уже есть ответы, подобные этому.

аюсь поддерживать CORS в моем приложении Node.js, которое использует веб-инфраструктуру Express.js. я прочиталгрупповое обсуждение Google о том, как справиться с этим, и прочитайте несколько статей о том, как работает CORS. Сначала я сделал это (код написан в синтаксисе CoffeeScript):

app.options "*", (req, res) ->
  res.header 'Access-Control-Allow-Origin', '*'
  res.header 'Access-Control-Allow-Credentials', true
  # try: 'POST, GET, PUT, DELETE, OPTIONS'
  res.header 'Access-Control-Allow-Methods', 'GET, OPTIONS'
  # try: 'X-Requested-With, X-HTTP-Method-Override, Content-Type, Accept'
  res.header 'Access-Control-Allow-Headers', 'Content-Type'
  # ...

Это не похоже на работу. Похоже, мой браузер (Chrome) не отправляет начальный запрос OPTIONS. Когда я только что обновил блок для ресурса, мне нужно отправить перекрестный запрос GET по адресу:

app.get "/somethingelse", (req, res) ->
  # ...
  res.header 'Access-Control-Allow-Origin', '*'
  res.header 'Access-Control-Allow-Credentials', true
  res.header 'Access-Control-Allow-Methods', 'POST, GET, PUT, DELETE, OPTIONS'
  res.header 'Access-Control-Allow-Headers', 'Content-Type'
  # ...

Работает (в Chrome). Это также работает в Safari.

Я прочитал это ...

В браузере, реализующем CORS, каждому перекрестному запросу GET или POST предшествует запрос OPTIONS, который проверяет, в порядке ли GET или POST.

Итак, мой главный вопрос: почему этого не происходит в моем случае? Почему не вызывается мой блок app.options? Зачем мне устанавливать заголовки в моем главном блоке app.get?

Ответы на вопрос(0)

Ваш ответ на вопрос