JSONP遇CORS策略错误No 'Access-Control-Allow-Origin',寻无需服务端修改的纯客户端方案
CORS跨域问题客户端侧解决方案
在完全不修改目标服务端配置、也不借助第三方公共服务的前提下,纯前端原生通用的CORS绕过方案不存在,CORS是浏览器实现的底层同源安全限制,前端代码无法直接突破。你当前的代码已经采用了jQuery JSONP的调用写法,可按以下方案逐一验证处理:
验证目标接口JSONP支持情况
你当前使用的$.getJSON('https://app-prod-ws.meteoswiss-app.ch/v1/forecast?plz=800000&callback=?', function(data){})写法,是jQuery内置的JSONP调用语法,会自动替换callback=?为自动生成的回调函数名。如果目标接口本身支持JSONP返回,这段代码可以直接正常执行,不会触发CORS限制,可直接在浏览器控制台运行验证返回结果。若接口不支持JSONP,可采用两种客户端可独立完成的方案:
- 部署本地中转代理服务:本地启一个轻量后端服务做请求转发,前端请求同源的本地服务,由本地服务发起对目标接口的请求再将结果返回给前端,即可完全规避CORS限制。仅需十几行代码即可用Node.js、Python等快速实现,无需操作目标服务端。
- 本地调试临时方案:可通过启动参数关闭浏览器的同源安全限制,以Chrome为例,启动时添加
--disable-web-security --user-data-dir="自定义临时目录路径"参数,启动后请求不会触发CORS报错,该方案仅适用于本地开发调试,无法用于面向普通用户的生产场景。
内容的提问来源于stack exchange,提问作者Reto
相关产品推荐
相关产品推荐

