在url中加载带有哈希的网站
我有一个webview,我可以在应用程序进入后台/退出时随时保存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"];
返回nil ==>显示字符串不是有效的URL
重新迭代:NSURL加载系统无法使用无效的URL。
什么使它无效是两个哈希。 编码1然后修复你的解码并发送test.org/?page=test#user_dat1=test%23user_dat2=test
操作只需要本地JS中的片段就可以了。 所以我建议在本地修复编码
- 用于iPad应用程序的sskeychain和基本身份validation教程?
- Swift:影响button点击的UITextfield? 由于animation无法input文字?
- 使用animationImages检测在UIImageView中点击了哪个图像
- Redbar在解散UIImagePickerController时注意到
- 自定义UITableViewCell,UITableView并允许MultipleSelectionDuringEditing
- 在iOS Sprite Kit游戏中创build关卡
- 自定义UITextField委托设置为self启动无限循环
- 在tvOS上的iCloud同步
- 用于Apache Cordova / Visual Studio 2015的工具无法在IOS模拟器中启动应用程序