Drupal 8 имеет встроенное ядро RESTful веб-сервиса, и с версии 8.2 нам не нужен модуль cors .
Теперь для использования сервисов мы просто включаем и настраиваем файл default.service.yml, как указано здесь
Однако я не смог настроить эту настройку, чтобы разрешить доступ веб-службы через другой домен.
Моя текущая настройка service.yml для cors:
cors.config:
enabled: true
# Specify allowed headers, like 'x-allowed-header'.
allowedHeaders: ['x-csrf-token,authorization,content-type,accept,origin,x-requested-with']
# Specify allowed request methods, specify ['*'] to allow all possible ones.
allowedMethods: ['POST, GET, OPTIONS, DELETE, PUT']
# Configure requests allowed from specific origins.
allowedOrigins: ['*']
# Sets the Access-Control-Expose-Headers header.
exposedHeaders: false
# Sets the Access-Control-Max-Age header.
maxAge: 1000
# Sets the Access-Control-Allow-Credentials header.
supportsCredentials: false
Я погуглил, чтобы найти более подробную конфигурацию по этому вопросу, но не смог найти.
Я создаю это для разработки тестов в двух разных доменах.
Использование среды разработки Pantheon для веб-служб и настраиваемого домена .dev для использования этих служб.
Доступ к сервису работает нормально с помощью расширения chrome CORS.
8
symfony-services
sarathkm
источник
источник
Ответы:
Я столкнулся с этим довольно недавно на Пантеоне, и, надеюсь, это поможет, если вы еще не решили это.
Несколько вещей, чтобы отметить ...
Что касается расположения файла в Pantheon, пожалуйста, убедитесь, что ваш файл service.yml находится в / sites / default против just / sites. Я был ошибочно под впечатлением, что это будет работать из обоих мест. Это будет работать только в каталоге / sites / default.
Обратите внимание на список допускаемых заголовков, разделенных запятыми, каждый в своем собственном наборе кавычек. Первоначально у меня была одна строка, как у вас в приведенном выше примере, и она провалилась бесчисленное количество раз, прежде чем я уловил тонкую разницу. Я вполне уверен, что allowMethods работает так же, если вы специально хотите перечислить ваши методы.
Также обратите внимание, что хотя мой фрагмент кода будет хорошо работать для разработки с песочницей Pantheon, вы, скорее всего, захотите еще немного заблокировать его перед началом работы. С Pantheon, предлагающим HTTPS, вы также захотите использовать его, если собираетесь передавать информацию через заголовки. Надеюсь, что это поможет или вам, если у вас все еще есть проблемы, или кому-то еще, кто наткнулся на это в будущем.
источник
Найти: ... / sites / default / default.services.yml
Сделайте копию и переименуйте копию в:
... / сайты / по умолчанию / services.yml
Найдите эту часть кода: cors.config: enabled: false
и замените его следующим: cors.config: enabled: true
Очистить кеш.
источник
Следующая настройка работает для меня.
источник
ctedHeaders: true недопустимо и вызовет предупреждение: implode (): неверные аргументы переданы в Asm89 \ Stack \ CorsService-> addActualRequestHeaders () (строка 94 из / vendor / asm89 / stack-cors / src / Asm89 / Stack / CorsService. php) # 0 /web/core/includes/bootstrap.inc(584) Это должен быть либо false, либо массив с разрешенными заголовками для показа, см. https://developer.mozilla.org/en-US/docs/Web/ HTTP / Headers / Access-Control-Expose-Headers
источник