Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Сделать стандартизированным HTTP ответ от ноды #221

Open
bitwheeze opened this issue Jan 14, 2023 · 2 comments

Comments

@bitwheeze
Copy link

Сейчас нода по http ответу возвращает следующий заголовок

HTTP/1.1 200 OK
Content-Length: 1858
Server: WebSocket++/0.8.1

По крайней мере отсутствует header

content-type: application/json

Все "нормальные" библиотеки спотыкаются на этом, так как в этом случае по подразумевается application/octet-stream.

Полная нода golos.id возвращает соотвествующий стандартам ответ

HTTP/2 200 
date: Sat, 14 Jan 2023 11:04:23 GMT
content-type: application/json
content-length: 1855
x-jussi-cache-hit: golos.database_api.get_dynamic_global_properties.params=[]
x-jussi-request-id: 000231768313024660
x-amzn-trace-id: 
access-control-allow-origin: *
access-control-allow-methods: GET, POST, OPTIONS
access-control-allow-headers: DNT,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Content-Range,Range
strict-transport-security: max-age=31557600; includeSubDomains; preload
content-security-policy: upgrade-insecure-requests
cf-cache-status: DYNAMIC
report-to: {"endpoints":[{"url":"https:\/\/a.nel.cloudflare.com\/report\/v3?s=bNvup4Z6Tt2xbrqNrcwspJcR2p%2BblVhiOMbd70XoUInHLb3%2Bt8PWlbZVZtK%2BG5v3o8B3m1cGDZ2jBd6aORrqMqAymLkBJN7ZDGLP4f6UkAbFmnEaAPwd9JR5mFmYHD1GbbEa%2Bg%3D%3D"}],"group":"cf-nel","max_age":604800}
nel: {"success_fraction":0,"report_to":"cf-nel","max_age":604800}
server: cloudflare
cf-ray: 7895e3f719325c5c-FRA
alt-svc: h3=":443"; ma=86400, h3-29=":443"; ma=86400

Потому сейчас для работы с chain-node напрямую надо использовать одну версию настроек, для работы с полной нодой другую.

Как минимум просьба, добавить "content-type: application/json" в ответ.

@Lex-Ai
Copy link

Lex-Ai commented Jan 14, 2023

А смысл в чем? Такого на графен-блокчейнах не было потому что во внешку всегда перед нодой стоит

  • либо nginx (иные прокси, где можно настроить что угодно включая content-type)
  • либо кеш-сервисы типа jussi, пример ответа которого ты и описал вторым, мы ее и юзаем для http всюду

Для прямой локальной связи с нодой же, очевидны преимущества WebSocket с одним или несколькими незакрываемыми соединениями.

Ну или добавить прокси / jussi у себя, чтобы было как на основных

@bitwheeze
Copy link
Author

А смысл в чем? Такого на графен-блокчейнах не было потому что во внешку всегда перед нодой стоит

У меня игровой сервер на java, в вместе со своей нодой стоят на одном сервере и общаются напрямую, без всяких прокси. Ну и когда надо обновлять ноду, надо переключать игровой сервер на публичную api ноду. Java библиотека слишком капризная, хочет соответствия стандартам. Ее надо по другому настраивать для локальной ноды и по другому для публичной. Сейчас то я сделал, что можно настройками поменять. Но все равно было бы удобнее, если просто URL поменял и все. Мне стоило времени, что бы понять, что за хрень, почему с нодой на прямую не работает и как это пофиксить. Каждый раз делая новое приложение, надо учитывать эту особенность http интерфейса ноды.

Мелочь конечно, может и пофиксить не долго, добавить заголовок и дело с концом.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants