由于CORS,AdonisJS后端API文件上传失败

时间:2018-05-29 17:58:20

标签: javascript cors adonis.js

我正在使用Docker Compose来调出两个Docker容器:

  1. Stock nginx容器运行WebPacked Vue.js应用程序并侦听端口9090。
  2. Stock node容器在AdonisJS项目中运行npm start并侦听端口3333.
  3. 目标是使用AJAX将文件从http://website.com:9090上传到http://website.com:3333,然后发回成功回复。在本地开发中,CORS不是问题,所有请求都很好。但是,当部署到"生产" (或计划生产)我在Firefox的JS控制台中收到以下错误:

    Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at http://lemcoe.nato:3333/uploader. (Reason: CORS request did not succeed).

    查看Firefox中的“网络”选项卡,我看到OPTIONSPOST(实际上传文件的请求)请求。 OPTIONS请求似乎是成功的,这些是请求的请求和响应标头:( lemcoe.nato在本地使用DNS指向website.com,在此图片中)

    CORS issue with AdonisJS

    然而,文件上传从未实际发生过。以下是从未收到响应的POST请求的标头:

    Unsuccessful POST request's headers.

    这是AdonisJS' config/cors.js配置文件:

    module.exports = {
        origin: '*',
        methods: ['GET', 'HEAD', 'PUT', 'PATCH', 'POST', 'DELETE'],
        headers: true,
        exposeHeaders: false,
        credentials: false,
        maxAge: 90
    }
    

    我已经尝试了我能想到的那些设置的每种组合,并且我已尽我所能确保所有端口都在Docker中正确映射。然而,当尝试执行文件上传到后端容器时,所有Web浏览器仍然显示CORS错误。

    我应该从哪里开始调试此问题?我相信项目对初始OPTIONS请求的响应是令人满意的,但在涉及此过程的第二步时,我必须遗漏一些内容。我觉得有趣的是,当相同的确切代码在相同端口上本地运行但没有Docker时,一切都按预期运行,并且控制台中从不提及CORS。只有当两个项目在同一个Docker主机上隔离(具有相同的端口和域)时,CORS问题才会成为问题。

    谢谢!

0 个答案:

没有答案