如果通过HTTP 302重定向返回UWP协议激活

如果通过HTTP 302重定向返回UWP协议激活,uwp,Uwp,今天,对于部署在上的同一个UWP项目,“协议激活”(自定义URI方案处理)在台式机和手机上的工作方式,我面临着非常奇怪的差异。在桌面上,您已成功激活应用程序。在手机上,它说你必须从商店中安装适当的应用程序来处理你的自定义URI方案(事实上,你以前在手机上安装过你的应用程序,甚至现在正在运行——为什么要搜索商店?) 重要提示:如果您在浏览器窗口中键入自定义URI,则两个硬件都可以。如果自定义URI作为HTTP请求的结果通过正确的HTTP 302重定向返回,则会出现此问题。因此,完整的用例是“请求普

今天,对于部署在上的同一个UWP项目,“协议激活”(自定义URI方案处理)在台式机和手机上的工作方式,我面临着非常奇怪的差异。在桌面上,您已成功激活应用程序。在手机上,它说你必须从商店中安装适当的应用程序来处理你的自定义URI方案(事实上,你以前在手机上安装过你的应用程序,甚至现在正在运行——为什么要搜索商店?)

重要提示:如果您在浏览器窗口中键入自定义URI,则两个硬件都可以。如果自定义URI作为HTTP请求的结果通过正确的HTTP 302重定向返回,则会出现此问题。因此,完整的用例是“请求普通URL->响应HTTP 302到自定义URI位置”

最后,我得出结论,如果与桌面浏览器相比,Edge的移动版在302上做了一些不同的事情,则会重定向。通过使用XAML WebView和不受支持的DurischemeIdentified事件处理程序快速编写最简单的应用程序,我学到了两件事:

  • 桌面WebView将重定向URI视为“yourapp://host/?params-一切都好
  • Phone WebView以转义形式查看您的重定向URI,如“intent://yourapp/确认”?参数列表#intentscheme=yourapp结束”(因此主机部分完全丢失,其他部分转义)
  • 我的问题是:

  • 为什么手机会这样
  • 让“协议激活”在同一代码库范围内的桌面和电话上工作的最佳实践是什么

  • 因此,问题是由服务器端逻辑引起的(在桌面浏览器或电话浏览器提供的用户代理头中进行天真的子字符串搜索)

    伙计们!决不,决不信任用户代理字符串

    Mozilla/5.0(Windows Phone 10.0;Android 6.0.1;Microsoft;Lumia 950 双SIM卡)AppleWebKit/537.36(KHTML,如Gecko)Chrome/52.0.2743.116 Mobile Safari/537.36 Edge/15.15063


    您的手机是否安装了该应用程序?如果您的设备中没有应用程序,它似乎会搜索商店?@screever,我当然有,请参见上文:[quote](事实上,您以前在手机上安装过应用程序,甚至现在正在运行,为什么要搜索商店?。[/quote]