Http
HTTP Request Methods (ანუ HTTP ზმნები) არის სტანდარტული გზა, რომლითაც კლიენტი (ბრაუზერი, QGIS, curl) ეუბნება სერვერს (Nginx, GeoServer), თუ რა ქმედების შესრულება სურს კონკრეტულ რესურსზე.ჩვენს GIS სტეკში თითოეულ მეთოდს თავისი კრიტიკული როლი აქვს. მოდი, დავშალოთ ისინი პრაქტიკული კუთხით:1. ძირითადი მეთოდები და მათი დანიშნულებამეთოდირას აკეთებს?გამოყენება GIS-შიGETითხოვს მონაცემს.ყველაზე ხშირი: რუკის ფილების (Tiles) წამოღება, GetCapabilities მოთხოვნა.POSTაგზავნის მონაცემს სერვერზე.ავტორიზაცია: Login ფორმის გაგზავნა. SLD: რთული სტილების ატვირთვა.PUTანახლებს არსებულ რესურსს.REST API: GeoServer-ში არსებული შრის პარამეტრების შეცვლა.DELETEშლის რესურსს.ადმინისტრირება: შრის ან Workspace-ის წაშლა API-ს მეშვეობით.OPTIONSამოწმებს უფლებებს (CORS).ბრაუზერი: ეკითხება Nginx-ს: "მაქვს უფლება, რომ სხვა დომეინიდან წამოვიღო ეს რუკა?"2. როგორ ვიყენებთ მათ კონკრეტულ სერვისებში?GeoServer & TomcatGeoServer-ი ძირითადად GET-ზე მუშაობს (რუკის ჩვენება), მაგრამ მისი მართვისთვის (REST API) აუცილებელია POST, PUT, DELETE.პრობლემა: ხშირად Tomcat-ი უსაფრთხოების გამო ბლოკავს PUT და DELETE მეთოდებს.გამოსავალი: web.xml-ში უნდა იყოს დაშვებული შესაბამისი HTTP მეთოდები, რომ შორიდან შეძლო GeoServer-ის კონფიგურირება კოდით.Nginx & Caddy (Reverse Proxy-ს როლი)ვებ-სერვერები მუშაობენ როგორც "ფილტრი". შენ შეგიძლია Nginx-ს უთხრა: "საჯარო მომხმარებელს დაუშვი მხოლოდ GET, ხოლო POST/PUT დაბლოკე ყველასთვის, გარდა ჩემი IP-სა".Nginx-ის მაგალითი (მხოლოდ წაკითხვის რეჟიმი საჯაროდ):Nginxlocation /geoserver/wms { limit_except GET POST { deny all; } proxy_pass http://127.0.0.1:8080/geoserver/wms; } Caddy (თანამედროვე მიდგომა)Caddy-ში მეთოდების მართვა ბევრად უფრო მარტივია. ის ავტომატურად უმკლავდება OPTIONS მოთხოვნებს (CORS), რაც Nginx-ში ხელით საწერია.3. რატომ გიქმნის ეს პრობლემას ავტორიზაციისას?შენს შემთხვევაში, როცა Login-ს აწვები:ბრაუზერი აგზავნის POST მოთხოვნას /j_spring_security_check-ზე.Nginx-მა ეს POST უნდა გადაუგზავნოს GeoServer-ს.თუ შენს კონფიგურაციაში proxy_set_header ან proxy_redirect არასწორია, Nginx-მა შეიძლება ეს მოთხოვნა GET-ად გადააკეთოს (Redirect-ის დროს), რაც ავტორიზაციას ჩააგდებს.4. როგორ გამოიყენო curl ამ მეთოდების დასატესტად?curl საშუალებას გაძლევს "მოიტყუო" და ნებისმიერი მეთოდით მიმართო სერვერს:GET მოთხოვნა (სტანდარტული):curl -X GET "https://10.116.12.45/geoserver/web/"POST მოთხოვნა (ტესტირებისთვის):curl -X POST -d "username=admin&password=geoserver" "https://10.116.12.45/geoserver/j_spring_security_check"OPTIONS (CORS-ის შესამოწმებლად):curl -X OPTIONS -i "https://10.116.12.45/geoserver/wms" (თუ პასუხში ხედავ Access-Control-Allow-Methods, ესე იგი Nginx-ი სწორად ატარებს მეთოდებს).