<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Re: Update Post throwing CORS Preflight error against ArcGis Online Rest Endpoint in ArcGIS JavaScript Maps SDK Questions</title>
    <link>https://community.esri.com/t5/arcgis-javascript-maps-sdk-questions/update-post-throwing-cors-preflight-error-against/m-p/1077062#M73782</link>
    <description>&lt;P&gt;Hi&amp;nbsp;&lt;a href="https://community.esri.com/t5/user/viewprofilepage/user-id/474649"&gt;@Neberu&lt;/a&gt;&amp;nbsp;note, this is not an issue with the ArcGIS API for JavaScript it's an issue with the manually created REST API requests. What's happening is the POST code is adding a header field that is triggering pre-flight. There's nothing in the JS API that would trigger pre-flight.&lt;/P&gt;&lt;P&gt;One recommendation is to build a simple, vanilla JS app against a secured feature layer using the ArcGIS API for JavaScripts applyEdits() method and then compare the headers with your manually generated REST requests. Here's some psuedo-code to help you get started:&lt;/P&gt;&lt;LI-CODE lang="javascript"&gt;              //create feature layer
              const fl = new FeatureLayer({url: ". . .", apiKey:"your_key"});

              // Add feature layer to map
              map.add(fl);

              const editFeature = new Graphic({
                geometry: someValidGeometry,
                attributes: {
                  attribute1: "TBD",
                  attribute2: "TBD"
                }
              });

              const edits = {
                updateFeatures: [editFeature]
              };

              fl.applyEdits(edits)
                .then((editResults) =&amp;gt; {
                  console.log("edit results: ", editResults);
                })
                .catch((error) =&amp;gt; {
                  console.error("Editing error: ", error);
                })&lt;/LI-CODE&gt;&lt;P&gt;Additional info:&lt;/P&gt;&lt;P&gt;* &lt;A href="https://developers.arcgis.com/javascript/latest/api-reference/esri-layers-FeatureLayer.html#apiKey" target="_self"&gt;apiKey&lt;/A&gt;&lt;/P&gt;&lt;P&gt;*&amp;nbsp;&lt;A href="https://community.esri.com/t5/arcgis-api-for-javascript/how-to-make-http-requests-work-with-axios-arcgisserver-amp-cors/m-p/1055674" target="_blank"&gt;https://community.esri.com/t5/arcgis-api-for-javascript/how-to-make-http-requests-work-with-axios-arcgisserver-amp-cors/m-p/1055674&lt;/A&gt;&lt;/P&gt;</description>
    <pubDate>Fri, 09 Jul 2021 00:14:17 GMT</pubDate>
    <dc:creator>AndyGup</dc:creator>
    <dc:date>2021-07-09T00:14:17Z</dc:date>
    <item>
      <title>Update Post throwing CORS Preflight error against ArcGis Online Rest Endpoint</title>
      <link>https://community.esri.com/t5/arcgis-javascript-maps-sdk-questions/update-post-throwing-cors-preflight-error-against/m-p/1077046#M73781</link>
      <description>&lt;P&gt;I have a simple Angular application that I am trying to use to post and update to a feature. However when I send the request I get the error:&lt;/P&gt;&lt;P&gt;Access to XMLHttpRequest at '&lt;A href="https://services.arcgis.com/" target="_blank"&gt;https://services.arcgis.com/&lt;/A&gt;&amp;lt;appid&amp;gt;/ArcGIS/rest/services/&amp;lt;service name&amp;gt;/FeatureServer/0/updateFeatures' from origin '&lt;A href="http://localhost:4200" target="_blank"&gt;http://localhost:4200&lt;/A&gt;' has been blocked by CORS policy: Request header field content-type is not allowed by Access-Control-Allow-Headers in preflight response.&lt;/P&gt;&lt;P&gt;This is the code I'm using&amp;nbsp;&lt;/P&gt;&lt;LI-CODE lang="csharp"&gt;update(id: number, data: string): Observable &amp;lt; any &amp;gt; {
    let params = new HttpParams();
    params = params.append('token', this.authService.userCredential.token);
    params = params.append('f', 'json');
    params = params.append('features', data)

    return this.httpClient.post(`${baseUrl}/updateFeatures`, {params: params}
    );&lt;/LI-CODE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;The preflight request is being generated and sent&amp;nbsp; automatically by the browser so I don't have any direct control over it. Looking at the network request I can see that the response to the preflight is completely lacking the&amp;nbsp;Access-Control-Allow-Headers parameter which I assume is what is causing the error.&lt;/P&gt;</description>
      <pubDate>Thu, 08 Jul 2021 23:05:34 GMT</pubDate>
      <guid>https://community.esri.com/t5/arcgis-javascript-maps-sdk-questions/update-post-throwing-cors-preflight-error-against/m-p/1077046#M73781</guid>
      <dc:creator>Neberu</dc:creator>
      <dc:date>2021-07-08T23:05:34Z</dc:date>
    </item>
    <item>
      <title>Re: Update Post throwing CORS Preflight error against ArcGis Online Rest Endpoint</title>
      <link>https://community.esri.com/t5/arcgis-javascript-maps-sdk-questions/update-post-throwing-cors-preflight-error-against/m-p/1077062#M73782</link>
      <description>&lt;P&gt;Hi&amp;nbsp;&lt;a href="https://community.esri.com/t5/user/viewprofilepage/user-id/474649"&gt;@Neberu&lt;/a&gt;&amp;nbsp;note, this is not an issue with the ArcGIS API for JavaScript it's an issue with the manually created REST API requests. What's happening is the POST code is adding a header field that is triggering pre-flight. There's nothing in the JS API that would trigger pre-flight.&lt;/P&gt;&lt;P&gt;One recommendation is to build a simple, vanilla JS app against a secured feature layer using the ArcGIS API for JavaScripts applyEdits() method and then compare the headers with your manually generated REST requests. Here's some psuedo-code to help you get started:&lt;/P&gt;&lt;LI-CODE lang="javascript"&gt;              //create feature layer
              const fl = new FeatureLayer({url: ". . .", apiKey:"your_key"});

              // Add feature layer to map
              map.add(fl);

              const editFeature = new Graphic({
                geometry: someValidGeometry,
                attributes: {
                  attribute1: "TBD",
                  attribute2: "TBD"
                }
              });

              const edits = {
                updateFeatures: [editFeature]
              };

              fl.applyEdits(edits)
                .then((editResults) =&amp;gt; {
                  console.log("edit results: ", editResults);
                })
                .catch((error) =&amp;gt; {
                  console.error("Editing error: ", error);
                })&lt;/LI-CODE&gt;&lt;P&gt;Additional info:&lt;/P&gt;&lt;P&gt;* &lt;A href="https://developers.arcgis.com/javascript/latest/api-reference/esri-layers-FeatureLayer.html#apiKey" target="_self"&gt;apiKey&lt;/A&gt;&lt;/P&gt;&lt;P&gt;*&amp;nbsp;&lt;A href="https://community.esri.com/t5/arcgis-api-for-javascript/how-to-make-http-requests-work-with-axios-arcgisserver-amp-cors/m-p/1055674" target="_blank"&gt;https://community.esri.com/t5/arcgis-api-for-javascript/how-to-make-http-requests-work-with-axios-arcgisserver-amp-cors/m-p/1055674&lt;/A&gt;&lt;/P&gt;</description>
      <pubDate>Fri, 09 Jul 2021 00:14:17 GMT</pubDate>
      <guid>https://community.esri.com/t5/arcgis-javascript-maps-sdk-questions/update-post-throwing-cors-preflight-error-against/m-p/1077062#M73782</guid>
      <dc:creator>AndyGup</dc:creator>
      <dc:date>2021-07-09T00:14:17Z</dc:date>
    </item>
    <item>
      <title>Re: Update Post throwing CORS Preflight error against ArcGis Online Rest Endpoint</title>
      <link>https://community.esri.com/t5/arcgis-javascript-maps-sdk-questions/update-post-throwing-cors-preflight-error-against/m-p/1077063#M73783</link>
      <description>&lt;P&gt;Oh, forgot to add that you might also take a look at this library:&amp;nbsp;&lt;A href="https://github.com/Esri/arcgis-rest-js/tree/master/packages/arcgis-rest-feature-layer" target="_blank"&gt;https://github.com/Esri/arcgis-rest-js/tree/master/packages/arcgis-rest-feature-layer&lt;/A&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Fri, 09 Jul 2021 00:18:32 GMT</pubDate>
      <guid>https://community.esri.com/t5/arcgis-javascript-maps-sdk-questions/update-post-throwing-cors-preflight-error-against/m-p/1077063#M73783</guid>
      <dc:creator>AndyGup</dc:creator>
      <dc:date>2021-07-09T00:18:32Z</dc:date>
    </item>
    <item>
      <title>Re: Update Post throwing CORS Preflight error against ArcGis Online Rest Endpoint</title>
      <link>https://community.esri.com/t5/arcgis-javascript-maps-sdk-questions/update-post-throwing-cors-preflight-error-against/m-p/1077076#M73785</link>
      <description>&lt;P&gt;I second Andy's suggestion to use ArcGIS REST JS. Here is the API Reference for updateFeatures:&lt;/P&gt;&lt;P&gt;&lt;A href="https://esri.github.io/arcgis-rest-js/api/feature-layer/updateFeatures/" target="_blank"&gt;https://esri.github.io/arcgis-rest-js/api/feature-layer/updateFeatures/&lt;/A&gt;&lt;/P&gt;</description>
      <pubDate>Fri, 09 Jul 2021 01:57:21 GMT</pubDate>
      <guid>https://community.esri.com/t5/arcgis-javascript-maps-sdk-questions/update-post-throwing-cors-preflight-error-against/m-p/1077076#M73785</guid>
      <dc:creator>BenElan</dc:creator>
      <dc:date>2021-07-09T01:57:21Z</dc:date>
    </item>
  </channel>
</rss>

