使用 url 中的哈希加载网站
load website with hashs in the url
我有一个网络视图,我在应用程序进入 background/exits 时保存了 url,这样我就可以在我们的网站上保留我们的用户位置。
我将用户输入的数据存储在 url 的主题标签中:
https://test.org/?page=test#user_dat1=test#user_dat2=test
user_dat1 和 user_dat2 跟踪用户所在的位置以及他们在页面上输入的内容。
当我使用以下内容时:
NSURL *url = [NSURL URLWithString:@"https://test.org/?page=test#user_dat1=test#user_dat2=test"];
[self.mywebview loadRequest:[NSURLRequest requestWithURL:url]];
我明白了:
https://test.org/?page=test%23user_dat1=test%23user_dat2=test
这让我的 php 和 js 都崩溃了。
如何强制主题标签不被编码?
编辑:
我在标记解决方案的指导下制作的代码解决方案
function read_hashes(){
try { // I know I shouldn't use try... but this is a easy way to reject invalid hashes
var hashes = window.location.hash;
hashes = hashes.substring(1);
hashes = JSON.parse(decodeURIComponent(hashes));
if (hashes["user_dat1"] != null){//check if var is in json hash
//do what you need to do with this var.
}
...
} catch(err){}
}
function put_hashes(){
var hashes = {};
hashes["user_dat1"] = "test data";
hashes = encodeURIComponent(JSON.stringify(hashes));
window.location.hash ="#" + hashes;
}
这允许我将变量存储在 js 哈希中,以将用户数据保存在表单中。请注意,我知道这是一个安全问题,我不会在任何会导致安全问题的页面上使用它。
不适用于 NSURL -- 如果未编码,则这是无效的 url。
NSURL *url = [NSURL URLWithString:@"https://test.org/?page=test#user_dat1=test#user_dat2=test"];
returns nil ==> 显示字符串 不是 有效的 url
重申:NSURL 加载系统无法实现无效的 url。
使它无效的是两个哈希值。编码 1 然后修复解码并发送 test.org/?page=test#user_dat1=test%23user_dat2=test
op 只想要他本地 JS 中的片段。所以我建议在本地修复编码
我有一个网络视图,我在应用程序进入 background/exits 时保存了 url,这样我就可以在我们的网站上保留我们的用户位置。
我将用户输入的数据存储在 url 的主题标签中:
https://test.org/?page=test#user_dat1=test#user_dat2=test
user_dat1 和 user_dat2 跟踪用户所在的位置以及他们在页面上输入的内容。
当我使用以下内容时:
NSURL *url = [NSURL URLWithString:@"https://test.org/?page=test#user_dat1=test#user_dat2=test"];
[self.mywebview loadRequest:[NSURLRequest requestWithURL:url]];
我明白了:
https://test.org/?page=test%23user_dat1=test%23user_dat2=test
这让我的 php 和 js 都崩溃了。
如何强制主题标签不被编码?
编辑: 我在标记解决方案的指导下制作的代码解决方案
function read_hashes(){
try { // I know I shouldn't use try... but this is a easy way to reject invalid hashes
var hashes = window.location.hash;
hashes = hashes.substring(1);
hashes = JSON.parse(decodeURIComponent(hashes));
if (hashes["user_dat1"] != null){//check if var is in json hash
//do what you need to do with this var.
}
...
} catch(err){}
}
function put_hashes(){
var hashes = {};
hashes["user_dat1"] = "test data";
hashes = encodeURIComponent(JSON.stringify(hashes));
window.location.hash ="#" + hashes;
}
这允许我将变量存储在 js 哈希中,以将用户数据保存在表单中。请注意,我知道这是一个安全问题,我不会在任何会导致安全问题的页面上使用它。
不适用于 NSURL -- 如果未编码,则这是无效的 url。
NSURL *url = [NSURL URLWithString:@"https://test.org/?page=test#user_dat1=test#user_dat2=test"];
returns nil ==> 显示字符串 不是 有效的 url
重申:NSURL 加载系统无法实现无效的 url。
使它无效的是两个哈希值。编码 1 然后修复解码并发送 test.org/?page=test#user_dat1=test%23user_dat2=test
op 只想要他本地 JS 中的片段。所以我建议在本地修复编码