Как обрабатывать CORS (или любые другие заголовки) с помощью GAE в среде flex и во время выполнения PHP? - PullRequest
0 голосов
/ 03 декабря 2018

Я использую Google AppEngine с PHP7.2 Runtime и столкнулся с проблемой с CORS.

В стандартной среде GAE заголовки можно установить с помощью приложения.yaml (handlers.http_headers) cf (https://cloud.google.com/appengine/docs/standard/php/config/appref#handlers_element):

handlers:
- url: /images
  static_dir: static/images
  http_headers:
    X-Foo-Header: foo
    X-Bar-Header: bar value

В среде GAE гибкая кажется, что это невозможно:

  • Нет обработчиков.Переменная http_headers может использоваться
  • Установка заголовков непосредственно в коде PHP не работает:

.

$response->headers->add(
    [
        'Access-Control-Allow-Origin' => 'http:/blabla-dot-my-app.appspot.com',
        'Access-Control-Allow-Methods' => 'GET, POST, PUT, DELETE, PATCH, OPTIONS',
    ]
);

Кажется, что GAE LB отбрасывает каждый заголовок, который мыхотите установить.

Итак ... как обрабатывать CORS (или другие заголовки) с помощью GAE в гибкой среде и среде выполнения PHP7.2?

1 Ответ

0 голосов
/ 05 декабря 2018

Наконец, я был единственным, кто ошибался в этом «вопросе».Маршрутизация, определенная в dispatch.yaml, была настроена таким образом, что я не запрашивал правильный сервис GAE .

Тем не менее, я узнал, что можно установить заголовки двумя способами:

  • Использование кода напрямую:

...

$response->headers->add(
    [
        'Access-Control-Allow-Origin' => '*',
        'Access-Control-Allow-Methods' => 'GET, POST',
        'Access-Control-Allow-Headers' => 'Content-Type,Authorization',
    ]
);

...

# CORS
add_header 'Access-Control-Allow-Origin' '*';
add_header 'Access-Control-Allow-Methods' 'GET,POST';
add_header 'Access-Control-Allow-Headers' 'Content-Type,Authorization';

location / {
  # CORS (again)
  if ($request_method = 'OPTIONS') {
    add_header 'Access-Control-Allow-Origin' '*';
    add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';
    #
    # Tell client that this pre-flight info is valid for 20 days
    #
    add_header 'Access-Control-Max-Age' 1728000;
    add_header 'Content-Type' 'text/plain; charset=utf-8';
    add_header 'Content-Length' 0;
    return 204;
  }
  # try to serve files directly, fallback to the front controller
  try_files $uri /$front_controller_file$is_args$args;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...