Я читал статью о Medium для развертывания Cloud Endpoints v1 перед сервисом Cloud Run, в котором размещен REST API, и все работает хорошо.
Теперь у меня есть требование включить поддержку CORS, и я добавил приведенную ниже конфигурацию в YAML-файл моих конечных точек, но получаю сообщение об ошибке «Эта служба не разрешает трафик CORS c», когда мой браузер пытается сделать предполетный запрос (я тестировал это с Почтальоном тоже с такой же ошибкой). Я знаю, что есть флаг для включения CORS --cors_preset=basic
с использованием переменных среды, но я не уверен, какой ключ установить. Любые идеи или помощь приветствуются.
Конечные точки YAML snipper:
swagger: '2.0'
info:
title: Cloud Endpoints with Cloud Run
description: Testing Cloud Endpoints with Cloud Run
version: 1.0.0
host: endpoint-<hash>-uc.a.run.app
x-google-endpoints:
- name: endpoint-<hash>-uc.a.run.app
allowCors: true
schemes:
- https
produces:
- application/json
Ошибка:
{
"code": 7,
"message": "The service does not allow CORS traffic.",
"details": [
{
"@type": "type.googleapis.com/google.rpc.DebugInfo",
"stackEntries": [],
"detail": "service_control"
}
]
}
PS: Спасибо Guillaum Blaquiere за потрясающую статью.
ОБНОВЛЕНИЕ: Я закончил тестирование с неполным URL-адресом и, следовательно, получил указанную выше ошибку как моя внутренняя служба не была настроена для ответа на все URL-адреса предполетных запросов. Исправив это, я теперь получаю указанную ниже ошибку только для URL-адреса, настроенного перед запуском CORS.
{
"code": 13,
"message": "INTERNAL_SERVER_ERROR",
"details": [
{
"@type": "type.googleapis.com/google.rpc.DebugInfo",
"stackEntries": [
],
"detail": "application"
}
]
}
и журналов:
invalid URL prefix in "", client: <CLIENT_IP>, server: , request: "OPTIONS /api/v1/<REMAINING_URL> HTTP/1.1", host: "endpoint-<HASH>-uc.a.run.app"