Get hands-on experience with 20+ free Google Cloud products and $300 in free credit for new customers.

CORS error on AJAX and Angular Fetch too

We are getting CORS error on the GET request from the AJAX as well as Angular fetch.

Attached is the details of the error and the proxy code is as below

CORS AssignMessage policy is as below

 

<AssignMessage name="add-cors">
  <DisplayName>Add CORS</DisplayName>
  <FaultRules/>
  <Properties/>
  <Set>
    <Headers>
      <Header name="Access-Control-Allow-Origin">*</Header>
      <Header name="Access-Control-Allow-Headers">origin, x-requested-with, accept, content-type, authorization, x-api-key, format, tenant</Header>
      <Header name="Access-Control-Max-Age">3628800</Header>
      <Header name="Access-Control-Allow-Methods">GET, PUT, POST, DELETE</Header>
    </Headers>
  </Set>
  <IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables>
  <AssignTo type="response" createNew="false" transport="http"/>
</AssignMessage>

 

The proxyendpoint is:

 

<ProxyEndpoint name="default">
  <Flows>
    <Flow name="OptionsPreFlight">
      <Request/>
      <Response>
        <Step>
          <Name>add-cors</Name>
        </Step>
      </Response>
      <Condition>request.verb == "OPTIONS" AND request.header.origin != null AND request.header.Access-Control-Request-Method != null</Condition>
    </Flow>
  </Flows>
  <PreFlow name="PreFlow">
    <Request>
      <Step>
        <Name>RF-MissingHeaders</Name>
        <Condition>(request.header.x-api-key = null or request.header.tenant = null or request.header.format = null) and request.verb != "OPTIONS"</Condition>
      </Step>
      <Step>
        <Name>ValidateEmplid</Name>
        <Condition>request.verb != "OPTIONS"</Condition>
      </Step>
      <Step>
        <Name>EV-ValidActiveFlag</Name>
        <Condition>request.verb != "OPTIONS"</Condition>
      </Step>
      <Step>
        <Name>EV-ValidateTermEEFlag</Name>
        <Condition>request.verb != "OPTIONS"</Condition>
      </Step>
      <Step>
        <Name>RF-NoAccess</Name>
        <Condition>(ActiveeeFlag=0 and request.queryparam.file Matches "ActiveEE") OR (termeeflag=0 and request.queryparam.file Matches "TermEE") and request.verb != "OPTIONS"</Condition>
      </Step>
      <Step>
        <Name>Service-Callout-1</Name>
        <Condition>request.verb != "OPTIONS"</Condition>
      </Step>
      <Step>
        <Name>EV-DocumentID</Name>
        <Condition>request.verb != "OPTIONS"</Condition>
      </Step>
      <Step>
        <Name>GetActiveEE</Name>
        <Condition>request.verb != "OPTIONS"</Condition>
      </Step>
      <Step>
        <Name>BasicAuthPolicy</Name>
        <Condition>request.verb != "OPTIONS"</Condition>
      </Step>
    </Request>
    <!--<Response>
        <Step>
        <Name>add-cors</Name>
        <Condition>request.verb == "OPTIONS" AND request.header.origin != null AND request.header.Access-Control-Request-Method != null</Condition>
        </Step>
        </Response>-->
    <Response/>
  </PreFlow>
  <Flows/>
  <PostFlow name="PostFlow">
    <Request/>
    <Response/>
  </PostFlow>
  <HTTPProxyConnection>
    <BasePath>/v1/mdt</BasePath>
    <VirtualHost>secure</VirtualHost>
  </HTTPProxyConnection>
  <RouteRule name="NoRoute">
    <Condition>request.verb == "OPTIONS" AND request.header.origin != null AND request.header.Access-Control-Request-Method != null</Condition>
  </RouteRule>
  <RouteRule name="test">
    <Condition>(environment.name = "non-prod-1" and request.verb != "OPTIONS")</Condition>
    <TargetEndpoint>Test</TargetEndpoint>
  </RouteRule>
  <RouteRule name="prod">
    <Condition>(environment.name = "prod-1")</Condition>
    <TargetEndpoint>Prod</TargetEndpoint>
  </RouteRule>
</ProxyEndpoint>

 

The TargetEndpoint looks like this:

 

<TargetEndpoint name="Test">
  <PreFlow name="PreFlow">
    <Request>
      <Step>
        <Name>AM-PathSuffixFalse</Name>
        <Condition>request.verb != "OPTIONS"</Condition>
      </Step>
    </Request>
    <Response>
      <Step>
        <Name>add-cors</Name>
      </Step>
    </Response>
  </PreFlow>
  <Flows/>
  <PostFlow name="PostFlow">
    <Request/>
    <Response/>
  </PostFlow>
  <HTTPTargetConnection>
    <!--<URL>https://wd2-impl-services1.workday.com/ccx/cc-blobitory/mmc8/cloud/3911747a-547e-4363-387c-75730d64742b</URL> -->
    <URL>https://wd2-impl-services1.workday.com/ccx/cc-blobitory/mmc8/{docid}</URL>
    <Properties>
      <Property name="response.streaming.enabled">true</Property>
      <Property name="request.streaming.enabled">true</Property>
      <Property name="io.timeout.millis">1800000</Property>
    </Properties>
  </HTTPTargetConnection>
</TargetEndpoint>

 

CORS.png

0 1 774
1 REPLY 1