如果通过HTTP 302重定向

时间:2017-05-22 16:46:04

标签: uwp

今天,我在“协议激活”(自定义URI方案处理)如何在桌面和电话上分别用于部署的同一个UWP项目时遇到了非常奇怪的区别。在桌面上,您已成功激活您的应用。在手机上,它说你必须从商店安装适当的应用程序来处理你的自定义URI方案(事实上你之前已经在手机上安装了你的应用程序,甚至现在就运行它 - 为什么要搜索商店?)。

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

最后,我得出的结论是,与桌面浏览器相比,Edge的移动版在302重定向上做了不同的事情。使用XAML WebView和UnsupportedUriSchemeIdentified事件处理程序快速编写最简单的应用程序,我学到了两件事:

  1. 桌面WebView将您的重定向URI视为“yourapp:// host /?params-list”,一切正常
  2. 手机WebView会以转义形式看到您的重定向URI,例如“意图: // yourapp / 确认?params-list#意图; < strong> scheme = yourapp ; 结束“(因此主机部分完全丢失,其他部分被转义)
  3. 我的问题是:

    1. 为什么手机会意图逃脱?
    2. 在相同的代码库范围内,桌面和手机上的“协议激活”工作的最佳做​​法是什么?

1 个答案:

答案 0 :(得分:0)

因此,问题是由服务器端逻辑引起的(在桌面浏览器或手机浏览器提供的User-Agent标头中进行了幼稚的子字符串搜索)。

后端人!从不,永远不要信任用户代理字符串!

  

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