Můj ArcGIS Data Interoperability ETL proces probíhal dobře, ale najednou jeho ArcGIS Online Feature Service zapisovač vyhodil chybu, která ukončila můj workspace, chybová zpráva vypadala takto:<\/P>
Chybový kód ze serveru byl '400' a zpráva byla: ''. Detaily: 'Pole public_description obsahuje neplatný html obsah.<\/FONT><\/P>Data pocházejí z místního vládního 311 webu - pole public_description je místo, kde veřejnost zaznamenala detaily své žádosti o službu. Jak se tam dostalo HTML? Co na tom bylo neplatné? Jak mohu zpevnit svůj překlad, aby zachytil tento druh věcí? <\/P>Po mnoha vyšetřováních a poznámce pro sebe, že s Safe zpracováním odmítnutí zapisovače budu mluvit znovu, jsem našel problematická data. Vyšetřování mi připomnělo hodinu matematiky, kdy jsme procházeli Isaac Newtonovu metodu regula falsi, zapnul jsem caching a použil dva Sampler transformátory k ohraničení viníka, dokud jsem ho nenašel. Nebyl to ani HTML, byl to email v závorkách: <somebody@hotmail.com><\/STRONG>.<\/P>OK, pomyslel jsem si, je rozumné dát email do pole s volným textem. Proč je feature service na to tak přísná? <\/P>Ukázalo se, že feature services mají nastavení (výchozí zapnuto), které blokuje potenciálně škodlivý obsah. Mám několik možností. Pokud by moje data opravdu obsahovala HTML obsah, mohl bych pole procentuálně kódovat pomocí TextEncoder a režimu HTML, mohl bych ručně kódovat závorky jako < a >, mohl bych odstranit cokoliv v tagách pomocí StringReplacer a regulárního výrazu <.*><\/STRONG>, nebo mohu změnit vlastnost služby a nechat data projít. Řekněme, že chci tuto poslední možnost.<\/P>K tomu potřebuji použít admin REST API volání. Vlastnost, kterou potřebuji změnit, je xssPreventionInfo.<\/P>Abych to udělal, ve svém prohlížeči přihlášen jako vlastník služby přejděte do sekce Content v aplikaci Home a najděte položku feature service. Vpravo dole je ovládací prvek, který vám umožní zobrazit REST API položky:<\/P>
<\/span><\/P>Přejděte tam ve svém prohlížeči (vaše URL samozřejmě bude jiná).<\/P>https:\/\/services.arcgis.com\/FQD0rKU8X5sAQfh8\/arcgis\/rest\/services\/Get_It_Done_311_Requests\/FeatureServer?token=<yourtoken><\/A><\/P>Pro přístup k admin API vložte slovo 'admin' mezi 'rest' a 'services':<\/P>
https:\/\/services.arcgis.com\/FQD0rKU8X5sAQfh8\/ArcGIS\/rest\/admin\/services\/Get_It_Done_311_Requests\/FeatureServer?token=<yourtoken><\/A><\/P>Poté na spodku stránky přejděte na endpoint UpdateDefinition:<\/P>
https:\/\/services.arcgis.com\/FQD0rKU8X5sAQfh8\/ArcGIS\/rest\/admin\/services\/Get_It_Done_311_Requests\/FeatureServer\/updateDefinition?token=<yourtoken><\/A><\/P>Nyní vyhledejte vlastnost xssPreventionInfo, nastavte hodnotu pro xssInputRule na sanitizeInvalid:<\/STRONG><\/P>
<\/span><\/P>Klikněte na tlačítko Update Service Definition a zkontrolujte, zda proběhlo úspěšně. Nyní můžete zapisovat HTML a věci jako <somebody@hotmail.com> do svého feature service!<\/P>