Saya mencoba menggores data dari URL ini: https://rgis.mosreg.ru/v3/swagger/layer?service=geojson&Bbox=37.51027598519073.55.58999926.55.8941499997&

Di browser web, jika saya mengunjungi halaman utama https://rgis.mosreg.ru pertama (untuk mendapatkan cookie) , dan selanjutnya - pergi ke URL ini - semua berfungsi dengan baik.

Tetapi ketika saya mencoba untuk melakukan permintaan ini di Postman - kesalahannya dengan 401 kesalahan "tidak dipadukan". Pada tukang pos saya menggunakan semua header dan cookie yang sama, seperti di browser web, tetapi tidak membantu. Semua cookie dan header disinkronkan dengan browser menggunakan Interceptor Postman

Apa yang saya lewatkan?

Layar Chrome dengan header Layar Postman. Header "Mojo" terlihat lini auth header

1
Sergey Barkov 4 April 2021, 11:11

1 menjawab

Jawaban Terbaik

Server tampaknya hanya menerima HTTP / 2 dan menolak panggilan HTTP / 1.1. Jika Anda memiliki curl dikompilasi dengan dukungan http2, Anda dapat menguji ini secara langsung:

curl --http2 'https://rgis.mosreg.ru/v3/swagger/map/layer?SERVICE=GeoJSON&layer=34&bbox=37.51027598519073,55.58991,37.84716401480926,55.89414999999997&zoom=11'

Keluaran

< HTTP/2.0 200
< server:nginx/1.19.5 (MOGT Edition @ rgis-pub-app-01)

Kalau tidak, itu mengembalikan 401

Saat ini, Anda tidak dapat menjalankan permintaan ini di Postman, karena Postman Doesn ' t memiliki dukungan http2 belum

Anda juga dapat mengujinya dengan menggunakan paket httpx (pip install httpx[http2]):

import httpx
import asyncio

url = 'https://rgis.mosreg.ru/v3/swagger/map/layer?SERVICE=GeoJSON&layer=34&bbox=37.51027598519073,55.58991,37.84716401480926,55.89414999999997&zoom=11'

r = httpx.get(url)
print(r.http_version)
print(r.status_code)

client = httpx.AsyncClient(http2=True)


async def get():
    response = await client.get(url)
    print(response.http_version)
    print(response.status_code)

asyncio.run(get())

Keluaran

HTTP/1.1
401
HTTP/2
200
2
Bertrand Martel 4 April 2021, 10:10