Конечные точки Google + grpc-web - PullRequest
0 голосов
/ 15 января 2019

Как видно из журнала изменений прокси-сервера esp для конечных точек Google (https://github.com/cloudendpoints/esp/pull/283) для него добавлена ​​поддержка grpc-web.

Однако я не могу заставить его работать. Я развернул ESP со следующей конфигурацией Cors

# Note: The following lines are included in a server block, so we cannot use all Nginx constructs here.
set $cors_expose_headers "";
set $cors_max_age "";

if ($request_method = 'OPTIONS') {
    set $cors_max_age 1728000;
    return 204;
}

if ($request_method = 'POST') {
    set $cors_expose_headers 'DNT,X-CustomHeader,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Content-Range,Range,content-transfer-encoding,custom-header-1,x-accept-content-transfer-encoding,x-accept-response-streaming,x-user-agent,x-grpc-web,grpc-timeout';
}

if ($request_method = 'GET') {
    set $cors_expose_headers 'DNT,X-CustomHeader,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Content-Range,Range,,content-transfer-encoding,custom-header-1,x-accept-content-transfer-encoding,x-accept-response-streaming,x-user-agent,x-grpc-web,grpc-timeout';
}

add_header 'Access-Control-Allow-Origin' '*';
add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';
add_header 'Access-Control-Allow-Headers' 'DNT,X-CustomHeader,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Content-Range,Range,,content-transfer-encoding,custom-header-1,x-accept-content-transfer-encoding,x-accept-response-streaming,x-user-agent,x-grpc-web,grpc-timeout';
add_header 'Access-Control-Expose-Headers' $cors_expose_headers;
add_header 'Access-Control-Max-Age' $cors_max_age;

А затем настроил конечную точку Google GRPC.

Когда я пытаюсь отправить запрос grpc-web в эту конечную точку, я вижу, что запрос OPTIONS проходит, но я получаю 400 обратно на фактический запрос со следующим ответом

{
 "code": 3,
 "message": "Unexpected token.\AAAAASIKAF5etnRlbkFw\n^",
 "details": [
  {
   "@type": "type.googleapis.com/google.rpc.DebugInfo",
   "stackEntries": [],
   "detail": "internal"
  }
 ]
}

Я думаю, что это исходит от конечных точек Google, что наводит на мысль, что поддержка grpc-web еще может быть не полностью.

Кому-нибудь удалось заставить это работать?

1 Ответ

0 голосов
/ 23 января 2019

Оказывается, что, как показывает разговор о запросе на извлечение, связанный с вопросом (и также проверенный мной позже), проблема заключалась в том, что я пытался использовать протокол grpc-web-text, который не поддерживается конечными точками облака Google..

После некоторых тестов я могу подтвердить, что конечные точки облака Google поддерживают grpc-web, но только двоичный формат проводного соединения, что означает отсутствие поддержки потоковой передачи на сервере, только унарные вызовы

...