Mein ArcGIS Data Interoperability ETL-Prozess lief gut, aber plötzlich warf der ArcGIS Online Feature Service-Schreiber einen Fehler, der meinen Workspace beendete. Die Fehlermeldung sah so aus:<\/P>
Der Fehlercode vom Server war '400' und die Nachricht lautete: ''. Details: 'Feld public_description enthält ungültigen HTML-Inhalt.<\/FONT><\/P>Die Daten stammen von einer lokalen Regierungs-311-Seite – das Feld public_description ist der Ort, an dem die Öffentlichkeit die Details ihrer Serviceanfrage erfasst hat. Wie kam HTML dort hinein? Was war daran ungültig? Wie kann ich meine Übersetzung härten, um solche Dinge abzufangen? <\/P>Nach viel Untersuchung und dem Vorsatz, das Thema writer rejection handling nochmal mit Safe zu besprechen, fand ich die fehlerhaften Daten. Die Untersuchung erinnerte mich an den Mathematikunterricht, als wir Isaac Newtons regula falsi Methode durchgingen, indem ich Caching einschaltete und zwei Sampler-Transformer benutzte, um den Übeltäter einzukreisen, bis ich ihn fand. Es war nicht einmal HTML, es war eine in Klammern gesetzte E-Mail: <somebody@hotmail.com><\/STRONG>.<\/P>OK, dachte ich, es ist vernünftig, eine E-Mail in ein Freitextfeld zu setzen. Warum ist der Feature-Service da so pingelig? <\/P>Es stellt sich heraus, dass Feature-Services eine Einstellung haben (standardmäßig aktiviert), die potenziell schädliche Inhalte blockiert. Ich habe einige Möglichkeiten. Wenn meine Daten wirklich HTML-Inhalt enthielten, könnte ich das Feld mit dem TextEncoder im HTML-Modus prozentkodieren, ich könnte Klammern manuell als < und > kodieren, ich könnte alles in Tags mit StringReplacer und einem regulären Ausdruck <.*><\/STRONG> entfernen oder ich könnte die Service-Eigenschaft ändern und die Daten durchlassen. Sagen wir, ich möchte letztere Option.<\/P>Ich muss einen Admin-REST-API-Aufruf verwenden. Die Eigenschaft, die ich ändern muss, heißt xssPreventionInfo.<\/P>Dazu gehen Sie in Ihrem Browser und eingeloggt als Service-Eigentümer zum Inhaltsbereich in der Home-App und navigieren zum Feature-Service-Element. Unten rechts gibt es eine Steuerung, mit der Sie das Element REST API anzeigen können:<\/P>
<\/span><\/P>Gehen Sie dort in Ihrem Browser hin (Ihre URL wird natürlich anders sein).<\/P>https:\/\/services.arcgis.com\/FQD0rKU8X5sAQfh8\/arcgis\/rest\/services\/Get_It_Done_311_Requests\/FeatureServer?token=<yourtoken><\/A><\/P>Um auf die Admin-API zuzugreifen, fügen Sie das Wort 'admin' zwischen 'rest' und 'services' ein:<\/P>
https:\/\/services.arcgis.com\/FQD0rKU8X5sAQfh8\/ArcGIS\/rest\/admin\/services\/Get_It_Done_311_Requests\/FeatureServer?token=<yourtoken><\/A><\/P>Dann gehen Sie unten auf der Seite zum Endpunkt UpdateDefinition:<\/P>
https:\/\/services.arcgis.com\/FQD0rKU8X5sAQfh8\/ArcGIS\/rest\/admin\/services\/Get_It_Done_311_Requests\/FeatureServer\/updateDefinition?token=<yourtoken><\/A><\/P>Suchen Sie nun nach der Eigenschaft xssPreventionInfo, setzen Sie den Wert für xssInputRule auf sanitizeInvalid:<\/STRONG><\/P>
<\/span><\/P>Klicken Sie auf die Schaltfläche Update Service Definition und prüfen Sie, ob sie erfolgreich abgeschlossen wird. Jetzt können Sie HTML und Dinge wie <somebody@hotmail.com> in Ihren Feature-Service schreiben!<\/P>