You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Visualforce集成Stripe支付页面在苹果Safari中无法显示

问题描述
  • 开发的Visualforce页面通过Stripe API生成包含姓名、银行卡输入字段的支付界面,依赖https://js.stripe.com/v3/库
  • 页面在Android、Windows及Mac的Chrome浏览器中正常运行,但iPhone和Mac的Safari浏览器无任何内容显示
  • iPhone调试时发现两个错误:
    • ComponentProfiler: Component-level profiling has not been enabled because "componentProfiler.instrumentation.ltng" gate is not open.
    • 因未出现在内容安全策略(Content Security Policy)的frame-ancestors指令中而无法加载
解决方案

1. 忽略无关警告

第一个ComponentProfiler错误属于Salesforce Lightning内部调试提示,和Safari无法加载支付界面无关,可直接忽略。

2. 调整Visualforce页面的CSP规则

Safari对CSP的frame-ancestors校验比Chrome更严格,需确保Stripe支付iframe能被页面正常嵌入:

  • 在页面的<apex:page>标签中添加contentSecurityPolicy属性,将Salesforce及Stripe相关域名加入允许列表:
<apex:page contentSecurityPolicy="frame-ancestors 'self' https://*.salesforce.com https://*.stripe.com;">
  • 若使用了自定义域名,需同步将自定义域名加入该列表。

3. 规范Stripe JS库的引入方式

避免使用相对协议//js.stripe.com/v3/,改用完整HTTPS地址引入Stripe库,防止部分浏览器触发CSP拦截:

<script src="https://js.stripe.com/v3/"></script>

4. 检查Salesforce站点的CSP配置

如果页面部署在Salesforce站点(Site.com),需在站点后台补充配置:

  • 进入设置 > 站点 > 对应站点名称 > 内容安全策略
  • 在Frame Ancestors字段中添加https://*.stripe.com以及你的Visualforce页面域名
  • 保存设置后清除浏览器缓存再测试

5. 验证支付意向创建逻辑

检查后端生成Stripe支付意向的代码,确保返回参数正常,未针对Safari浏览器做特殊限制。可通过Safari开发者工具查看网络请求,确认Stripe JS库加载成功、支付意向API请求正常返回数据。

内容的提问来源于stack exchange,提问作者Ajitesh Singh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.22 14:02:14