You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Shopify私有应用代理URL跳转至应用服务器URL问题求助

解决Shopify私有应用代理URL跳转至服务器URL的问题

这种跳转问题我之前开发Shopify私有应用时也踩过坑,大概率是代理配置、Laravel路由响应或者服务器设置出了问题,给你几个具体的排查和解决方向:

  • 检查Shopify代理配置是否正确
    登录Shopify后台进入你的应用设置,找到「代理设置」:

    • 确认「代理路径前缀」是 /a/test
    • 确认「目标URL」是 https://test.devserver.co.in/shopify/test,且目标URL必须是HTTPS(Shopify强制要求)
      另外要注意,Shopify是将代理请求转发到你的服务器,你的服务器需要直接返回页面内容,而不是跳转响应。
  • 排查Laravel路由/控制器的响应逻辑
    你定义的 /shopify/test 路由对应的控制器方法,是不是不小心返回了重定向?比如用了 redirect() 方法:

    // 错误示例:会导致跳转
    public function testProxy(Request $request) {
        return redirect('/some-other-page');
    }
    

    正确的做法应该是返回视图或者直接输出内容:

    // 正确示例:返回页面内容
    public function testProxy(Request $request) {
        // 可以先处理Shopify传入的参数,比如$request->shop、$request->path_prefix等
        return view('shopify.proxy-content');
    }
    
  • 排除CSRF验证对代理路由的影响
    Laravel默认会对所有POST请求做CSRF验证,而Shopify的代理请求属于外部请求,会触发CSRF验证失败。如果你的错误处理逻辑里有跳转,就会出现跳转问题。
    打开 app/Http/Middleware/VerifyCsrfToken.php,把代理路由添加到$except数组里:

    protected $except = [
        '/shopify/test',
    ];
    
  • 检查服务器的重定向规则
    如果你用的是Nginx或Apache,检查服务器配置里有没有强制跳转的规则:

    • 比如Nginx里是否有多余的rewrite规则导致/shopify/test被重定向
    • Apache的.htaccess文件里是否有影响代理请求的重定向规则
      确保服务器不会对代理路由的请求做额外跳转。
  • 验证签名验证逻辑是否正确
    虽然签名验证失败通常返回403,但如果你的验证逻辑里错误地用了跳转代替abort,也会出现问题。正确的签名验证应该是这样的:

    use Illuminate\Support\Facades\Hash;
    use Illuminate\Http\Request;
    
    public function testProxy(Request $request) {
        // 验证Shopify签名
        $signature = $request->get('signature');
        $params = $request->except('signature');
        $hmac = hash_hmac('sha256', http_build_query($params), config('shopify.api_secret'));
    
        if (!hash_equals($hmac, $signature)) {
            abort(403, 'Invalid proxy request signature');
        }
    
        // 正常返回内容
        return view('shopify.proxy-content');
    }
    

    这里一定要用hash_equals来避免时序攻击,不要用redirect处理验证失败的情况。

按这个顺序排查下来,应该能解决跳转的问题。

内容的提问来源于stack exchange,提问作者Gurpreet Singh

火山引擎 最新活动