最近在做UNI项目,编译为H5,部署到自己的服务器时,出现了一个很蛋疼的问题:
**has been blocked by CORS policy: Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource**
这不就是万恶的跨域么?但奇葩的是,在前端代码所在服务器上curl接口地址,是可以ping通的哦。
第一想法,上UNI官网看看,毕竟官网的意见还是相对权威的,总结官网的观点就是2句话:
方案1:最利索的,当然还是将前端代码和后端接口部署在同域的web服务器上。
方案2:由后台服务器配置策略,设为允许跨域访问。
第1种方案不可行,接口服务器是客户的,不为我们所用。
第2种方案,后台服务器已经开放了跨域限制了,可H5页面还是请求不到。。。
官方不行,那就百度、谷歌走一通,大部分的回答都是配置devServer,范例如下:
"h5": {
"devServer": {
"port": 8000,
"disableHostCheck": true,
"proxy": {
"/dpc": {
"target": "http://dpc.dapeis.net",
"changeOrigin": true,
"secure": false
}
}
}
}
我欣喜若狂地尝试了一通,结果TMM,还是不行。。。说实在的 我实在想不通这样配置,是怎么实现了代理的。。。(麻烦有识之士留言)
如是乎,我去吃个饭,洗个澡,冷静了一下,,,出来后脑子灵光一闪,我把接口地址指向前端代码所在服务器A,再由A通过nginx转向到正式的接口服务器,不就好了。。。
激动时刻来了,还真的可以访问了。。。特此留言,兴许能帮到后期遇到同样问题的同行。。。
PS:诚接各类软件定制开发
9 个评论
要回复文章请先登录或注册
yinghuoc
1***@163.com
[已删除]
l***@orcacn.com
f***@west.cn
s***@foxmail.com
9***@qq.com
1***@qq.com
2***@qq.com