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

无目标服务器控制权时能否发起跨源请求?Ajax跨域问题咨询

问题:Ajax调用OFAC的SDN XML文件时遇到CORS错误,能否解决?

我尝试通过Ajax调用链接https://www.treasury.gov/ofac/downloads/sanctions/1.0/sdn_advanced.xml,但持续收到错误提示:

No 'Access-Control-Allow-Origin' header is present on the requested resource

由于我完全无法控制该信息来源,请问此请求是否可行?是只需调整请求配置,还是从根本上无法实现?

相关Ajax代码片段如下:

$.ajax({ 
  url: 'https://www.treasury.gov/ofac/downloads/sanctions/1.0/sdn_advanced.xml', 
  type: "GET",
  // 其他配置...
});

回答

很遗憾,直接从前端浏览器发起Ajax请求这个链接根本无法实现,原因和解决思路如下:

  1. CORS限制的本质
    这个错误是浏览器的同源策略(Same-Origin Policy)导致的:浏览器会默认阻止前端脚本从不同域名的服务器获取资源,除非目标服务器明确通过Access-Control-Allow-Origin响应头允许你的域名访问。而你完全无法控制treasury.gov的服务器配置,所以没办法让它添加这个授权头。

  2. 为什么调整请求配置没用
    你可能会想尝试修改dataType、添加自定义头或者调整其他Ajax参数,但这些操作都绕不开浏览器的CORS检查。哪怕你想改用JSONP,这个接口也不支持JSONP格式(它返回的是纯XML,不是带回调函数的JSON结构),所以这条路也走不通。

  3. 可行的替代方案
    既然前端直接请求行不通,你可以通过以下两种方式解决:

  • 搭建后端代理:在你自己的服务器上写一个中转接口,由后端去请求treasury.gov的XML文件,然后把获取到的内容返回给前端。后端请求不受浏览器同源策略限制,完全可以正常拿到数据。
  • 定期缓存文件到本地:如果数据不需要实时更新,可以定期手动或者通过脚本把这个XML文件下载到你自己的服务器,然后前端直接请求自己服务器上的缓存文件。

总结一下:前端直接请求这个第三方资源是不可能的,必须借助后端代理或者本地缓存的方式绕开CORS限制。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 10:30:52