如何解决Xamarin.Forms Webview中未发送自定义请求标头
是否有人试图将身份验证标头“注入”到表单或本机WebView中?有一个好的解决方案吗?
我们需要从Forms应用程序内向网页发出GET请求,并且必须在Authentication标头中发送访问令牌。 我已经实现了自定义WebViewRenderers(适用于iOS和Android),在其中重写了OnElementChanged方法,代码运行无误,但标头未随请求发送。它不适用于Android或iOS。
这是我当前对WebViewRenderers的实现:
namespace MyNamespace.Droid.Renderers
{
public class HybridWebViewRenderer : WebViewRenderer
{
public HybridWebViewRenderer(Context context) : base(context){}
protected override void OnElementChanged(ElementChangedEventArgs<WebView> e)
{
base.OnElementChanged(e);
var webView = e.NewElement as HybridWebView;
var token = "dummytoken";
IDictionary<string,string> headers = new Dictionary<string,string>
{
{"Authorization","Bearer " + token }
};
string url = ((UrlWebViewSource)webView.Source).Url;
Control.LoadUrl(url,headers);
}```
```[assembly: ExportRenderer(typeof(HybridWebView),typeof(HybridWebViewRenderer))]
namespace MyNamespace.iOS.Renderers
{
public class HybridWebViewRenderer : WkWebViewRenderer
{
public static void Initialize()
{ }
protected override void OnElementChanged(VisualElementChangedEventArgs e)
{
base.OnElementChanged(e);
var webView = e.NewElement as HybridWebView;
var url = ((UrlWebViewSource)webView.Source).Url;
var newRequest = new NSMutableUrlRequest();
var token = "dummytoken";
NSMutableDictionary dic = new NSMutableDictionary();
dic.Add(new NSString("Authorization"),new NSString("Bearer " + token));
newRequest.Headers = dic;
newRequest.Url = new NSUrl(url);
LoadRequest(newRequest);
}```
For Android I already tried the WebViewClient approach also,without success. (from here https://forums.xamarin.com/discussion/87944/custom-header-in-webview)
Any ideas?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。