Shopify Django 应用程序管理链接在 Amazon EC2 实例上部署后不起作用

问题描述 投票:0回答:1

我在 Django 中制作了一个测试 Shopify 应用程序。这个应用程序的本质是通过 Shopify 管理仪表板管理链接下载订单发票。当我使用 ngrok 隧道时,该应用程序在我的本地主机上运行良好。发票正在根据命令下载,但是当我在 AWS EC2 实例上部署此应用程序时,管理链接不起作用。 发票 Pdf 已正确生成,但我猜它没有作为 HttpResponse 发送。

def download_invoice(request, raw_order, template_name):
    raw_order['product_data'] = product_data
    dir_path = settings.MEDIA_ROOT
    with tempfile.TemporaryDirectory(dir=dir_path) as tmpdir:
        output_filename = tmpdir + '\\' + "my-invoice.pdf" 
        path=os.path.join(os.path.dirname(__file__),'./templates/home')
        templateLoader = jinja2.FileSystemLoader(searchpath=path)
        templateEnv = jinja2.Environment(loader=templateLoader)
        TEMPLATE_FILE = template_name
        template = templateEnv.get_template(TEMPLATE_FILE)
        outputText = template.render(data=raw_order)
        pdfkit.from_string(outputText, output_filename)
        filename = "my-invoice.pdf" 
        wrapper = FileWrapper(open(output_filename, 'rb'))
        print(output_filename)
        # breakpoint()
        # pass
        response = HttpResponse(wrapper, content_type=mimetypes.guess_type(output_filename)[0])
        response['Content-Length'] = os.path.getsize(output_filename)
        response['Content-Disposition'] = "attachment; filename=" + filename
        return response

此函数在我的应用程序界面上调用时会下载 pdf,但在 Shopify 管理链接中调用时不会下载发票。

也许 EC2 安全组存在问题。 My Inbound RulesMy Outbound Rules

据我认为 EC2 配置存在一些问题,因为当我使用 Ngrok 隧道并在本地主机上运行应用程序时,一切正常。即使应用程序部署在 EC2 实例上但未发送,该文档也会正确生成。 如果需要任何其他详细信息,请告诉我。 任何帮助将不胜感激。

python django amazon-web-services amazon-ec2 shopify-app
1个回答
0
投票

这个问题就解决了。 问题是 ec2 实例没有 SSL,因此 shopify 拒绝任何“不安全”的响应,并且它在本地主机上工作,因为浏览器对待本地主机的方式与“http”连接不同。

© www.soinside.com 2019 - 2024. All rights reserved.