有人懂 cloudflare 跨域嘛

2022-07-13 14:45:11 +08:00
 roiding

我在 cloudflare 上挂了一个域名的 dns

具体网页请求如下:nft.dingran.ga->api.dinran.ga

nft 页面中有一个 ajax 请求从 api.dingran.ga 拿取数据。api.dingran.ga/api 其实是一个反代到 docker 的 nginx 反代实例。

然后郁闷的点就来了: 当 nft 是 http 协议时,这个 ajax 请求可以正常发起,返回头是有 access-control-allow-origin: *的(后台服务也是我写的,我做了跨域处理) 但是当变为 https 协议后,ajax 返回头就没有 access-control-allow-origin: *,会导致跨域问题,无法访问,求解我应该怎么操作

1281 次点击
所在节点    前端开发
4 条回复
roiding
2022-07-13 15:59:13 +08:00
https 发现请求的响应会变成 301 重定向,故而导致失败。
就不是很理解,我同样的地址浏览器可以正常请求,怎么从 https 中请求 https 时就变成了 301
novolunt
2022-07-13 16:07:02 +08:00
不能强制添加响应头,origin: * 和 credentials: "true"不能同时启用

corsPolicy:
allowCredentials: true
allowHeaders:
- access-control-allow-headers
- access-control-allow-origin
- content-type
- Accept-Language
allowMethods:
- GET
- POST
- PUT
- DELETE
- PATCH
- OPTIONS
allowOrigins:
- regex: 'https?:\/\/dingran.ga|https?:\/\/.*[.]dingran.ga'
maxAge: 300s
roiding
2022-07-13 16:37:07 +08:00
@novolunt . 我并没有同时启用
roiding
2022-07-13 16:40:14 +08:00
@novolunt 现在应该是好的了 绕最后把自己绕进去了 折腾了一天才发现问题 老了 脑子不好了

我因为 nginx 和后台跑在两个不同的 docker 里,所以我之前反代地址写了域名地址,所以我只要一打开强制 https 就必死

现在我改到同一个网络里了 就好了 感觉以后还是得靠自己 nginx 来实现 301 cloudflare 的 301 是全域名级的

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/865911

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX