V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
roiding
V2EX  ›  前端开发

有人懂 cloudflare 跨域嘛

  •  
  •   roiding · 2022-07-13 14:45:11 +08:00 · 1489 次点击
    这是一个创建于 856 天前的主题,其中的信息可能已经有所发展或是发生改变。

    我在 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: *,会导致跨域问题,无法访问,求解我应该怎么操作

    roiding
        1
    roiding  
    OP
       2022-07-13 15:59:13 +08:00
    https 发现请求的响应会变成 301 重定向,故而导致失败。
    就不是很理解,我同样的地址浏览器可以正常请求,怎么从 https 中请求 https 时就变成了 301
    novolunt
        2
    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
        3
    roiding  
    OP
       2022-07-13 16:37:07 +08:00
    @novolunt . 我并没有同时启用
    roiding
        4
    roiding  
    OP
       2022-07-13 16:40:14 +08:00
    @novolunt 现在应该是好的了 绕最后把自己绕进去了 折腾了一天才发现问题 老了 脑子不好了

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

    现在我改到同一个网络里了 就好了 感觉以后还是得靠自己 nginx 来实现 301 cloudflare 的 301 是全域名级的
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   956 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 21:27 · PVG 05:27 · LAX 13:27 · JFK 16:27
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.