问题简介: 用Hbuilder开发uniapp 的 h5项目时,运行到外部谷歌浏览器chrome进行调试,当后台使用打印命令如dd('123),在开发者工具devtool的preview内看不到调试或打印信息,提示跨域,这样用chrome不方便调试,我在后端nginx配置跨域设置后依然不行,这是为什么,如何解决?
特别情况 如果运行到Hbuider内置浏览器时在开发者工具的preview可以正常输出'123'),且只要去掉dd()打印标签后,接口访问正常的,200状态码下chrome运行是正常的,没有跨域的报错。
当后台用dd('123),时,前端提示500状态,且报错截图如下:
控制台提示错误:
localhost/:1 Access to XMLHttpRequest at 'http://a.b.c/api/index' from origin 'http://localhost:8080' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.
在hbiuderx 的内置浏览器运行后,可以看到preview 和response都可以显示后端打印的值:
所以这不是服务器端跨域设置问题,而是前端的hbiuderx与运行的外部浏览器chrome没有打通的问题,不知道是缺什么配置?
问题背景:前端是h5版,uniapp项目,后台是php环境,macos、mamp开发环境,
前端h5地址:http://localhost:8080/
后台服务器接口地址:http://a.b.c/api/index
nginx跨域配置:
location /api {
add_header 'Access-Control-Allow-Origin' 'http://localhost:8080';
add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS, PUT, DELETE';
add_header 'Access-Control-Allow-Credentials' 'false';
add_header 'Access-Control-Allow-Headers' 'Authorization,Content-Type,Accept,Origin,User-Agent,DNT,Cache-Control,X-Mx-ReqToken,X-Data-Type,X-Requested-With,X-Data-Type,X-Auth-Token,X-Api-Key,Merchant-Id,Device-id,Device-Name,Width,Height,Os,Os-Version,Is-Root,Network,Wifi-Ssid,Wifi-Mac,Xyz,Version-Name,Api-Version,Channel,App-Name,Dpi,Api-Level,Operator,Idfa,Idfv,Open-Udid,Wlan-Ip,Time';
add_header 'Access-Control-Expose-Headers' 'Content-Disposition,XMLHttpRequest';
add_header 'Content-Disposition' 'attachment';
try_files $uri $uri/ /api/index.php$is_args$args;
}