У меня есть ссылка, которая перенаправляет на пользовательский протокол, такой как custom://open/...
, используя GET-запрос, и он отлично работает, и приложение открывается.Я хочу загрузить промежуточную страницу и выполнить обработку, а затем перенаправить на пользовательский протокол.Я пробовал
$.post("/f", {f: m, name: "name"}, function() {
window.location.href = "${redirect}";
Но в консоли Chrome с помощью удаленной отладки я получаю следующее.(В эмуляции Android Chrome для настольных ПК только «навигация отменена» - ожидается.)
Навигация заблокирована: custom: //ProductDetail/com.test.autofl3? Id = autofl3 & channel = & env = development & package = com.test.autofl3
Я попытался
$.post("/f", {f: m, name: "${name}", redirect: "${redirect}"});
И выдал перенаправление 302 от контроллера на стороне сервера, но он выполняет запрос GET, за которым следует запрос POST (совершенно неверно)и дает мне
Доступ к XMLHttpRequest в 'custom: //ProductDetail/com.cnn? id = cnn & channel = & env = development & package = com.cnn' (перенаправлено с 'http://127.0.0.1:8080/f')from origin 'http://127.0.0.1:8080' заблокирован политикой CORS: запросы на разные источники поддерживаются только для схем протоколов: http, data, chrome, chrome-extension, https.
Я пытался(верните POST, чтобы вернуть OK) и используйте это, я нашел: https://gist.github.com/davidwkeith/2662899
$.post("/f", {f: m, name: "${name}", redirect: "${redirect}"}, function() {
$('#loader').src = "${redirect}";
Но ничего не вышло. Никаких ошибок.
Я использую Spring Boot нана стороне сервера, не то чтобы это имело значение.
Я уже видел
Я пытался создать кнопку и выдать искусственный щелчок мыши с событиями, как описано здесь, но это не сработало.Навигация по-прежнему «отменена».
https://stackoverflow.com/a/13236463/148844
<script>
$(function() {
console.log("${redirect}");
var linkToFakeClick = document.createElement("a");
linkToFakeClick.href = "${redirect}";
var fakeMouseClickEvent = document.createEvent("MouseEvents");
fakeMouseClickEvent.initMouseEvent("click", true, true, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null);
linkToFakeClick.dispatchEvent(fakeMouseClickEvent);
console.log("fake clicked");