4

When using the $Asset global variable in Visualforce, it looks like Salesforce is trying to load resources from na38.salesforce.com instead of c.na38.visual.force.com. This is causing it to violate the CORS policy on na38.salesforce.com and fail to load resources. Has anybody else seen this/have a workaround? Images load fine when using the merge field directly via URLFOR() but adding icons in javascript fails and the fonts fail to load.

Update with Sample Code

<apex:page>
  <apex:slds/>
  <div class="slds-scope" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
    <h1 class="slds-text-heading--large">
      Hello world
    </h1>
    <div id="img">
      <img src="{!URLFOR($Asset.SLDS, 'assets/images/avatar1.jpg')}" alt="Contact Avatar"/>
    </div>
    <div id="svg">
      <span class="slds-icon_container slds-icon-standard-account" title="description of icon when needed">
        <svg class="slds-icon" aria-hidden="true">
          <use xlink:href="{!URLFOR($Asset.SLDS, '/assets/icons/standard-sprite/svg/symbols.svg#account')}"></use>
        </svg>
        <span class="slds-assistive-text">Description of icon</span>
      </span>
    </div>
  </div>
</apex:page>

You will see that the image tag loads fine but the svg fails with

Unsafe attempt to load URL https://app-dev-dsh0-dev-ed.my.salesforce.com/apexpages/slds/2.1.3/assets/icons/standard-sprite/svg/symbols.svg from frame with URL https://app-dev-dsh0-dev-ed--c.na38.visual.force.com/apex/sldstest. Domains, protocols and ports must match.

  • 1
    Can you add your markup/script here just to be explicit? – Adrian Larson Feb 8 '17 at 0:59
  • Added a reduced test case. – dsharrison Feb 8 '17 at 1:11
7

I'm a platform developer. We're tracking this with bug W-3638602, and hope to get a fix in soon. Look for it in the next week.

After the fix, SLDS resources will be served from c.na38.visual.force.com, the same as your Visualforce page.

Thank you for catching this bug!

| improve this answer | |
  • 3
    Always good to see more SFDC R&D on SFSE. Thanks for joining to chime in! – ca_peterson Feb 8 '17 at 19:51
  • 1
    Could you add a link to the issue? Could not find it in salesforce – juvian Feb 13 '17 at 17:35
  • @juvian bugs aren't automatically posted as known issues - the support team owns those, and somebody would need to ask them (via case generally) to create one for it to happen. The internal bugs often aren't that useful directly without being translated to customer-impacting terms. – ca_peterson Feb 17 '17 at 18:15
  • @ca_peterson I see, guess I will be waiting for a fix then. Thanks for the response – juvian Feb 18 '17 at 4:41
  • The cors issue with apex:slds / $asset.slds appears to be fixed in the Spring17 release (just tested it as part of a managed package). – James Sullivan Mar 1 '17 at 8:41

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.