crossOrigin="use-credentials"使用遇阻,CORS跨域问题求助
解决跨域带凭证加载图片的问题
问题根源
你的配置存在两个关键缺失:
- 仅用
--cors启动http-server时,默认返回的Access-Control-Allow-Origin是*,而跨域携带凭证(如HTTP Basic认证)时,不允许使用通配符*作为允许的源,必须指定具体的请求源(即你的8081应用地址)。 - 未配置
Access-Control-Allow-Credentials: true响应头,浏览器不会在跨域请求中携带认证信息,也不会接受带凭证的响应。
修正后的启动命令
将http-server的启动命令修改为:
node ./bin/http-server --username test --password image --cors http://localhost:8081 --header "Access-Control-Allow-Credentials: true"
参数说明
--cors http://localhost:8081:指定允许跨域请求的源为你的8081应用地址,替代默认的*。--header "Access-Control-Allow-Credentials: true":添加响应头,告知浏览器该服务允许跨域携带凭证。
验证步骤
- 用上述命令重启8080的http-server服务。
- 刷新8081应用页面,此时浏览器会自动在请求中携带HTTP Basic认证信息(test/image),图片将正常渲染,不会再出现CORS报错。
补充说明
- 若你的8081应用使用的是其他端口或域名,需将
--cors后的参数替换为对应的源地址。 - 跨域携带凭证时,
crossOrigin="use-credentials"属性必须存在,否则浏览器不会携带认证信息。
内容的提问来源于stack exchange,提问作者mruanova
相关产品推荐
相关产品推荐

