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

为何CORS拦截sms://协议链接?如何配置使其正常工作?

解决sms链接触发CORS错误的问题

核心原因

你遇到的CORS错误,本质是代码触发方式不对:浏览器只会对HTTP/HTTPS这类网络请求做跨域校验,而直接点击a标签唤起短信应用属于本地协议唤起,不会触发CORS。错误说明你的代码里大概率是用JavaScript发起了类似fetch、XMLHttpRequest的请求去访问sms://地址,而非让用户直接点击a标签。

解决方案

  • 直接使用原生a标签,让用户手动点击
    保留你最初的代码即可,不要用JS去主动请求这个地址:

    <a href="sms://+99-999-99-99">send text message</a>
    
  • 如果需要JS动态触发唤起
    不要用fetch或XMLHttpRequest,而是模拟用户点击a标签的行为:

    const smsLink = document.createElement('a');
    smsLink.href = 'sms://+99-999-99-99';
    document.body.appendChild(smsLink);
    smsLink.click();
    document.body.removeChild(smsLink);
    
  • 排查干扰逻辑
    检查页面中是否有拦截a标签点击事件的代码,比如阻止默认行为后用网络请求处理链接,这类逻辑会触发CORS错误,需要移除或修改。

额外说明

不需要在服务器、.htaccess做任何配置,因为sms://不是HTTP协议,服务器无法针对这类协议返回CORS头,问题完全出在前端触发方式上。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 12:15:04