V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
suling
V2EX  ›  Vue.js

关于前后端分离项目部署到阿里云 OSS API 接口问题

  •  
  •   suling ·
    52NineTwo · 2021-07-30 13:39:26 +08:00 · 2404 次点击
    这是一个创建于 972 天前的主题,其中的信息可能已经有所发展或是发生改变。

    我有一个完全前后端分离的项目 vue 打包后将 dist 全部上传到 OSS 并且配置了 CDN 页面可以正常访问,OSS 跨域也设置过了。但是所有的 Get 接口提示 404,Post 接口提示 405 大家有遇到过类似的情况吗?怎么解决

    16 条回复    2021-07-30 17:39:17 +08:00
    xuxuxu123
        1
    xuxuxu123  
       2021-07-30 13:52:52 +08:00
    后端部署在哪?
    postman 可以访问通后端接口吗?
    suling
        2
    suling  
    OP
       2021-07-30 14:11:23 +08:00
    @xuxuxu123 后端是 PHP 的 部署在其他服务器上,postman 是通不了的 我在 vue 里设置了跨域代理 本地调试是没问题的。但是就是 OSS 内有问题
    ylls
        3
    ylls  
       2021-07-30 14:39:44 +08:00
    前后端是同一个域名吗
    ylls
        4
    ylls  
       2021-07-30 14:41:08 +08:00
    如果用的是一个域名 流量都没到后端服务器上面
    如果不是同一个域名 直接调用后端接口试试看
    yimity
        5
    yimity  
       2021-07-30 14:44:15 +08:00
    @suling postman 访问不了,你 Vue 怎么能访问得了?
    Vegetable
        6
    Vegetable  
       2021-07-30 14:45:58 +08:00
    405 是 method not allowed
    根据你的描述,你是 api 请求到 oss 上去了。

    打开调试工具,网络,找一个 405 的请求,复制为 curl(bash),发出来给大家看看
    yushiro
        7
    yushiro  
       2021-07-30 14:59:41 +08:00 via iPhone
    OSS 上怎么可能支持 PHP,OSS 只是一个硬盘,你的 api 需要部署在其他 ecs 服务器下,指定一个域名
    VUE 打包的时候,应该可以配置 public 路径,类似象 CDN 那样的,把静态资源丢 CDN 域名上
    最终访问还是打开 ECS 的域名
    zoharSoul
        8
    zoharSoul  
       2021-07-30 16:18:47 +08:00
    postman 通不了你琢磨 vue 的问题干啥
    xuxuxu123
        9
    xuxuxu123  
       2021-07-30 16:20:58 +08:00
    @suling vue 跨域代理只在 dev 开发环境有效;打包后是无效的;静态 html 做不了跨域;
    bigbigpark
        10
    bigbigpark  
       2021-07-30 16:22:38 +08:00
    @yushiro oss 上只有前端文件
    dream4ever
        11
    dream4ever  
       2021-07-30 16:23:18 +08:00
    @yushiro “后端是 PHP 的 部署在其他服务器上”,楼主是把前端部分部署在 OSS 上的。
    xuxuxu123
        12
    xuxuxu123  
       2021-07-30 16:23:23 +08:00
    现在可能存在的问题:
    1 、前端请求地址有误,你可以打开浏览器控制台,请求地址应该是请求到了 oss ;#6 说的就是这个
    2 、后端对外接口不通,如果后端没问题的话,postman 应该是可以访问的到的,postman 不存在跨域。跨域只针对浏览器环境
    3 、前端请求跨域,这个可以在 php 处理,或者在服务器部署 nginx 处理
    qwerthhusn
        13
    qwerthhusn  
       2021-07-30 16:23:24 +08:00
    看 F12,对着有问题的请求右键点 Copy -> Copy As cURL(bash),仔细观察 URL,Referer,Origin 各种头,这种问题一般很容易定位出来。
    xuxuxu123
        14
    xuxuxu123  
       2021-07-30 16:28:10 +08:00
    楼主吧你的域名发出来,,,就能很快处理了~~~
    zzl22100048
        15
    zzl22100048  
       2021-07-30 17:07:07 +08:00
    前端的 baseUrl 没有配置吧,默认会请求当前域名
    ch2
        16
    ch2  
       2021-07-30 17:39:17 +08:00
    跨域请求部署的时候必须发绝对路径,不能发相对路径,dev 的时候是本机转发的
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   3133 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 118ms · UTC 13:00 · PVG 21:00 · LAX 06:00 · JFK 09:00
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.