ruby-on-rails - 无法在 Shopify 的应用程序中嵌入网站(X-Frame-Options)

标签 ruby-on-rails ruby shopify x-frame-options

过去几周我一直在开发我的第一个 RoR/Shopify 应用程序,它快完成了。我唯一遇到的麻烦是申请费用。当用户在商店中看到我的应用程序时,他单击“获取”,然后初始化身份验证过程。正在安装应用程序,用户可以接受/拒绝收费。如果他拒绝,他将被重定向到我在商店中的应用列表。 现在这是我的问题。如果用户拒绝付费,我的应用程序仍会安装,如果他第二次点击我的横幅,我需要检查他是否为此付费。我通过

if (ShopifyAPI::RecurringApplicationCharge.current)
   some logic since the charge is valid
else 
   redirect_to billing_index_path(:shop_url => cur_shop_url)

我的想法是,如果用户还没有付款,则让带有收费费用的弹出窗口再次出现。这不起作用,我收到一条错误消息,指出我的网站未显示,因为 X-Frame-Options 设置为 DENY。我已经尝试删除我的 application_controller.rb 和我的 application.rb 中的选项

Response.headers.delete('X-Frame-Options') 

config.action_dispatch.default_headers.delete('X-Frame-Options') 

分别。用户第一次安装该应用程序时,一切似乎都正常,嵌入、逻辑等,但在他第二次尝试后,一切都变得一团糟。每次用户访问我的应用程序时,如何嵌入所有站点?我读到 Shopify 的回复默认有一个 DENY header ,但我确信必须有解决此问题的方法。我不能让用户每次都卸载该应用程序。

提前致谢

最佳答案

Shopify 忽略其收费批准表格中的 302。原因是,您的应用嵌入在 iframe 中。无论来源如何,支付确认端点都拒绝嵌入 iframe - 他们甚至不将自己的网站列入白名单!!

这意味着您不能简单地在订阅确认 url 上做一个表单发布和 302 成功,那太容易了。

必须编写一些 javascript 来获取确认 url 并执行 window.top.location = confirm_url;

必须脱离 iframe,否则 shopify 也会拒绝您的重定向功能,您将回到原来的位置。

或者,您可以在新窗口中打开链接。

我必须转换我的“快速而简单”的应用程序以进行 Ajax 调用以将订阅信息提交到我的服务器,然后使用发回的结果确认 URL 进行 JS 重定向。

不得不说,Shopify 的 API 可怕地文档不足,而且实现得非常糟糕。他们的“API”每时每刻都设置了障碍。

关于ruby-on-rails - 无法在 Shopify 的应用程序中嵌入网站(X-Frame-Options),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32230982/

相关文章:

mysql - ActiveRecord 什么时候真正连接到数据库?

ruby-on-rails - 使用 ruby​​ gem guard-shopify 的步骤是什么

shopify - 有关 customer/data_request webhooks 的一般问题

ruby-on-rails - 测试从命令行运行但不在 RubyMine 中运行 - 未找到测试

ruby-on-rails - 可以在初始值设定项中访问 Rails 模型中的模块变量吗?

ruby-on-rails - 使用表单提交的 Ruby on Rails 文件下载

ruby - Rubocop:使用 next 跳过迭代

javascript - 使用 cURL 访问 API 可以正常工作,但不能使用 Fetch API

ruby-on-rails - rake 数据库 :migrate is creating tables from other rails projects

ruby-on-rails - Rails 日志记录错误 : "Error during failsafe response: Shifting failed." . .. 有一个优雅的解决方案吗?