如何在webview中为本地js文件启用cookie
How to enable cookie in webview for local js file?
我想在WebView中接受cookie,但是得到错误
Uncaught Error: SECURITY_ERR: DOM Exception 18
问题只发生在本地js文件中。正如Android文档所说,我必须使用setAcceptFileSchemeCookies
但这不能解决我的问题。我不知道我做错了什么。
整个代码列表:
protected override void OnCreate(Bundle bundle) {
try {
base.OnCreate(bundle);
SetContentView(Resource.Layout.Main);
_webView = FindViewById<WebView>(Resource.Id.webview);
string html = string.Empty;
Android.Webkit.CookieManager.SetAcceptFileSchemeCookies(true);
using (var stream = _webView.Context.Assets.Open("res/mobileLogin.html")) {
using (TextReader reader = new StreamReader(stream)) {
html = reader.ReadToEnd();
}
}
_webView.Settings.JavaScriptEnabled = true;
_webView.Settings.AllowFileAccess = true;
_webView.Settings.AllowUniversalAccessFromFileURLs = true;
_webView.SetWebViewClient(new HybridWebViewClient());
_webView.SetWebChromeClient(new WebChromeClient());
_webView.LoadDataWithBaseURL("file:///android_asset/res/", html, "text/html", "UTF-8", null);
Android.Webkit.CookieManager.Instance.SetAcceptCookie(true);
} catch (Exception ex) {
Console.WriteLine(ex.Message);
}
}
据我所知,在Android上将cookie主机设置为localhost
会触发安全异常。如果您在远程主机上尝试相同的操作,它可能会工作。当然,这并不能解决你的问题。类似于:https://stackoverflow.com/a/24897724/368379这样的东西可以提供一个自己处理东西的起点,但与cookie不完全相同。
如果你选择JavascriptInterface,你可以在Xamarin中实现它。Android:
public class MyJavascriptInterface : Java.Lang.Object
{
[Export("DoStuff")]
[JavascriptInterface]
public void DoStuff(string stuff)
{
// do something here with the string
}
}
var webView = new WebView(this);
webView.Settings.JavaScriptEnabled = true;
var interface = new MyJavascriptInterface();
webView.AddJavascriptInterface(interface, "MyJavascriptInterface");
然后你可以在Javascript中像这样调用它:
MyJavascriptInterface.DoStuff("My Awesome String");
相关文章:
- JS文件的路径正在消失
- 我的外部js文件无法加载
- 在不破坏未定义函数的情况下,对多个视图使用单个js文件
- 动态加载和卸载js文件
- 如何将变量传递到另一个js文件
- 如何将所有JS文件连接到一个文件夹中
- 从Chrome扩展名中的popup.html文件在background.js文件中运行一个函数
- 如何使用php文件中的GET来获取我在.js文件中声明的变量
- 如何将模板中的标记脚本移动到.js文件中
- 什么's是连接供应商js文件的最佳方式
- 如何在定义js文件后为外部javascript文件设置变量
- 如何在JS文件中获取资源(.resx)字符串
- 将*.js文件的内容放入Object中
- 如何从onclick函数设置全局变量并将其传递给另一个JS文件
- 导致内容安全策略(CSP)冲突错误的本地jquery.js文件
- 如何使用Gmail运行.js文件
- 如何定义一个模块并使用它来分离js文件
- Angular JS文件上传到托管服务器
- 如何引用HTML中节点模块中的js文件
- 如何将JS文件从其他文件夹链接到页面