Javascript 来修改 URL 并分配 URL,而无需使用源作为父级

Javascript to modfiy URL and assign the a URL without using the origin as a Parent

本文关键字:URL 修改 分配 Javascript      更新时间:2023-09-26

我有这个脚本,它以字符串的形式将值发送到服务器以更改设备上的 ipv4 信息需要一些帮助,在 post 请求成功后自动将 URL 更改为新地址,而无需使用源作为父 URL。 就像在window.location.replace(myUrl(的情况下;

我得到 http://192.168.10.128/192.168.10.125

其中 125 是新地址。

 $.ajax({
                type : 'POST',
                url : '/ipcfg/ipcfg_set.cgi',
                dataType : 'json',
                data : {
                    ipv4_addr : addr,
                    ipv4_mask : mask,
                    gw_addr : gw
                },
                success : function() {
                    var myUrl = encodeURI(addr);
                    window.location.replace(myUrl);
                    //document.location.href = myUrl;
                    //location.assign(href, myUrl);

                    console.log("sucesss");
                },
                error : function(xhr, type) {
                    console.log("failed" + type, +xhr);
                }
            });
        }

如果你只是192.168.10.125传递给location.replace,那么这与你分配f.e.几乎相同。 index.html相反 - 它指的是当前路径下的"文件"(或文件夹( - 这就是为什么http://192.168.10.128/192.168.10.125是这里唯一正确的结果。

您需要在它前面加上协议 - 就像您要链接到不同的网站一样,www.google.com无法按预期工作,您需要使用http://www.google.com(或https://www.google.com//www.google.com(

因此,如果您希望浏览器导航到 http://192.168.10.125 ,那么代码中的该行需要

window.location.replace("http://" + addr);

(在这种情况下应用encodeURI会适得其反。


编辑,以解决评论:

想知道我是否可以重定向到新 URL,而无需重新加载页面。

不,这是不可能的。

很明显,为什么不呢:如果我可以替换我的域名https://myphishingsite.com,我之前通过一封措辞巧妙的电子邮件引诱你进入浏览器地址栏中的https://yourrealonlinebankingsite.com而不重新加载当前页面,那不可能是好的,对吧?

(HTML5 历史记录 API 允许您替换地址栏中显示的部分内容,但只能从路径组件开始向右替换。URL 的协议、主机名和端口部分必须保持不变。