HTTP 415 Unsupported media type "application/x-www-form-urlencoded" in request
Das Nautobot-ui-plugin unter https://gitlab-ce.gwdg.de/gwdg-netz/nautobot-plugins/nautobot-ui-plugin/ nutzt einen Mechanismus zum speichern eines topologie-views.
Dies geschieht via AJAX (bzw irgend einen WebRequest) in saveView der "next_app.js":
https://gitlab-ce.gwdg.de/gwdg-netz/nautobot-plugins/nautobot-ui-plugin/-/blob/master/nautobot_ui_p lugin/static/nautobot_ui_plugin/next_app.js?ref_type=heads#L356
Standardmäßig wird das einen Request mit application/x-www-from-urlencoded-Verpackung schicken.
Leider hat nautobot aus unerfindlichen Gründen, ihr Django so umkonfiguriert, dass dieses Encoding nicht mehr geht (https://github.com/nautobot/nautobot/pull/2644) Das hat auch schon andere gebissen (https://github.com/nautobot/nautobot/issues/3124) Damit enden alle versuche, ein Layout zu speichern in
HTTP 415 Unsupported media type "application/x-www-form-urlencoded" in request
Es sieht so aus, als gäbe es 2 Lösungsansätze:
- im JavaScript-App den POST so verändern, dass die daten JSON-Encodiert übermittelt werden, zb:
$.ajax({ type: 'POST', url: topoSaveURI, contentType: "application/json; charset=utf-8", data: JSON.stringify({ 'name': topoSaveName, 'topology': topo.data(), 'layout_context': { 'initialLayout': initialLayout, 'displayUnconnected': !displayUnconnected, 'undisplayedRoles': undisplayedRoles, 'undisplayedDeviceTags': undisplayedDeviceTags, 'displayPassiveDevices': !displayPassiveDevices, 'displayLogicalMultiCableLinks': displayLogicalMultiCableLinks, 'requestGET': requestGET, } }), # ... )
- Auf django-Seite im SaveUI-Handler explizit den Form-Parser erlauben, ähnlich zu https://github.com/nautobot/nautobot/pull/2937
Ich persönlich habe das bei uns umschifft, indem ich den Form-Parser global wieder eingeschaltet habe.