使用CURL命令确定Access-Control-Allow-Origin问题

一、问题描述

有前端小伙伴反馈ajax请求遇到跨域问题,也让后端小伙伴设置了跨域允许,但诡异的事情是在前端小伙伴的微信开发者工具中Network headers中看到了两行:Access-Control-Allow-Origin,其中居然出现了:“Access-Control-Allow-Origin:*”:

在这里插入图片描述

但在我电脑上的微信开发者工具却是正常,并没有“Access-Control-Allow-Origin:*”:

在这里插入图片描述
而后端小伙伴在ng中确实也去掉了“Access-Control-Allow-Origin:*”的设置,设定成指定的域名。

二、问题排查

微信开发者工具版本是一致的,为了排除客户端的差异引起的影响,确定是否是后端的设置问题,使用了CURL来进行请求,查看返回的请求头信息:

curl -i -H "Content-Type:application/json" -X POST -d '{"xxx":"xx"}' http://xxx

在这里插入图片描述
可以看到请求返回的headers确实带有Access-Control-Allow-Origin:*,最终排查确定是后端的代码中设置了Access-Control-Allow-Origin:*。

  • 12
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
`api-config` 是自定义的 HTTP 请求头,而 `Access-Control-Allow-Headers` 是服务器响应中的一个 CORS(跨来源资源共享)头,用于指定服务器允许客户端发送的请求头。 如果客户端发送的请求头不在服务器允许的头列表中,服务器就会返回一个 `api-config is not allowed by Access-Control-Allow-Headers` 类似的错误。 要解决这个问题,可以使用 Kong API 网关的 `cors` 插件。这个插件可以自动为响应头添加 `Access-Control-Allow-Headers`,从而允许客户端发送自定义的请求头。 以下是如何在 Kong 中启用 `cors` 插件的步骤: 1. 安装 `cors` 插件: ``` $ sudo luarocks install kong-oidc ``` 2. 在 Kong 中创建一个新的服务或路由: ``` $ curl -i -X POST \ --url http://localhost:8001/services/ \ --data 'name=my-service' \ --data 'url=http://my-service.com' ``` 或者: ``` $ curl -i -X POST \ --url http://localhost:8001/routes/ \ --data 'hosts[]=my-host.com' \ --data 'paths[]=/my-path' \ --data 'service.name=my-service' ``` 3. 为该服务或路由启用 `cors` 插件: ``` $ curl -i -X POST \ --url http://localhost:8001/services/my-service/plugins/ \ --data 'name=cors' \ --data 'config.origins=*' \ --data 'config.methods=GET, POST, PUT, DELETE' \ --data 'config.headers=api-config, Authorization' ``` 注意:这里的 `config.headers` 参数中包含了 `api-config` 请求头。 现在,客户端就可以发送带有 `api-config` 请求头的请求,而不会收到 `api-config is not allowed by Access-Control-Allow-Headers` 的错误了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

晓风伴月

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值