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

如何为JavaScript小部件放宽同源规则?(适配已弃用谷歌财经数据)

解决WordPress站点的跨域请求(SEC7120)问题

你遇到的是典型的浏览器同源策略限制——本地IDE测试时,浏览器对localhost的跨域校验规则比较宽松,而线上正式域名会严格检查目标接口返回的Access-Control-Allow-Origin响应头,导致请求被拦截。下面给你几个适配WordPress场景的可行解决方案:

方案1:用WordPress后端做请求代理(最可靠)

核心思路是:前端不再直接请求Google Finance的API,而是请求自己WordPress站点的后端接口,由服务器帮你转发请求并返回数据——服务器端请求不受浏览器同源策略限制。

具体操作:

  • 打开当前主题的functions.php文件(或者创建一个极简自定义插件),添加以下代码:
// 注册自定义API路由
add_action('rest_api_init', function () {
    register_rest_route('custom-proxy/v1', '/nsei-data/', array(
        'methods' => 'GET',
        'callback' => 'fetch_nsei_finance_data',
        'permission_callback' => '__return_true' // 允许公开访问,可按需调整权限
    ));
});

// 处理请求转发的函数
function fetch_nsei_finance_data() {
    $target_api = 'https://www.google.com/finance/getprices?q=.NSEI&x=NSE&i=600&p=1d&f=d,o,h,l,c,v';
    $response = wp_remote_get($target_api);
    
    if (is_wp_error($response)) {
        return new WP_Error('fetch_failed', '无法获取数据', array('status' => 500));
    }
    
    // 设置响应头,确保前端能正常接收
    header('Content-Type: text/plain');
    return wp_remote_retrieve_body($response);
}
  • 前端代码里把请求地址替换为你的WordPress REST API地址,比如:https://www.my-wordpress-site.com/wp-json/custom-proxy/v1/nsei-data/
  • 这样前端请求的是自身域名,完全符合同源策略,后端帮你完成跨域数据的获取和转发。

方案2:安装CORS相关插件(最简单)

如果不想写代码,可以尝试WordPress的CORS类插件,比如Enable CORS或WP CORS:

  • 安装激活插件后,在设置里添加允许访问的外部域名(这里是https://www.google.com)
  • 注意:不是所有外部API都支持被添加CORS头,Google Finance的API可能未开放这个权限,所以这个方案可能不一定生效,但可以优先尝试。

方案3:尝试JSONP(备选方案)

Google Finance的部分接口支持JSONP格式,你可以在请求URL后追加&callback=yourFunctionName参数,用JSONP方式发起请求:

function processNseiData(data) {
    // 处理返回的原始数据
    console.log(data);
}

// 通过script标签发起JSONP请求
const scriptTag = document.createElement('script');
scriptTag.src = 'https://www.google.com/finance/getprices?q=.NSEI&x=NSE&i=600&p=1d&f=d,o,h,l,c,v&callback=processNseiData';
document.body.appendChild(scriptTag);

不过要注意:JSONP存在安全风险,且现代API大多不再优先支持这种方式,所以仅作为备选方案。

额外排查提示

  • 可以用浏览器开发者工具的Network面板,查看请求的响应头,确认Access-Control-Allow-Origin是否存在,帮助定位问题
  • 确保前端代码里的请求地址没有拼写错误,尤其是WordPress REST API的路由部分

内容的提问来源于stack exchange,提问作者Arash Howaida

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 11:53:45