Как предотвратить предупреждение безопасности Internet Explorer во время HTTPWebRequest - PullRequest
1 голос
/ 14 марта 2011

Есть ли способ предотвратить появление сообщения об ошибке или программного нажатия кнопки «Да» для сообщения, которое появляется при получении запроса HTTPWebRequest?Приведенный ниже код вызывает сообщение с текстом «Эта страница имеет неопределенную потенциальную угрозу безопасности. Хотите продолжить?»Заголовок сообщения «Internet Explorer».Некоторые подсказки относительно того, что может быть причиной сообщения об ошибке:

• Кажется, оно не вызвано sslPolicyErrors в виде строки кода ServicePointManager.ServerCertificateValidationCallback = ((отправитель, сертификат, цепочка, sslPolicyErrors) => правда);должно предотвращать это.

• Параметры Internet Explorer были установлены таким образом, чтобы веб-сайт http://jobsearch.monster.com был в списке доверенных сайтов.

• Сообщение появляется после следующего за последнимвыполняется строка кода: -oDoc.close ();

• Сообщение можно просмотреть, запустив код в ответ на нажатие кнопки в форме вдовы.

• Для того, чтобы сообщение исчезло, необходимо вручную нажать три раза на сообщение об ошибке (да или нет).

• На данный момент это единственный веб-сайт, вызывающий это сообщение об ошибке.

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Text;
using System.Windows.Forms;
//using System.Threading;
using System.Net;
using mshtml;

namespace FitCShp
{
    public partial class frmThreadIssue : Form
    {
        public frmThreadIssue()
        {
            InitializeComponent();
        }

        private void button2_Click(object sender, EventArgs e)
        {
            HTMLDocumentClass oDoc;
            oDoc = GetDoc();
        }

        public HTMLDocumentClass GetDoc()
        {
            string WebAddrs = "http://jobsearch.monster.com/PowerSearch.aspx?q=proven%20record%20relationship&where=portland%2C%20or&rad=20&rad_units=miles&tm=60";
            IHTMLDocument2 oDoc = null;
            HttpWebRequest Req = (HttpWebRequest)WebRequest.Create(WebAddrs); //build the request
            ServicePointManager.ServerCertificateValidationCallback = ((sender, certificate, chain, sslPolicyErrors) => true); 
            Req.AllowAutoRedirect = true;
            Req.ContentType = "application/x-www-form-urlencoded";
            Req.KeepAlive = false;
            Req.UserAgent = "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.11) Gecko/20071127 Firefox/2.0.0.11'";
            HttpWebResponse resp = (HttpWebResponse)Req.GetResponse();
            //Get the encoding of the response
            System.Text.Encoding Enc = System.Text.Encoding.GetEncoding(resp.CharacterSet);
            StreamReader sr = new StreamReader(resp.GetResponseStream(), Enc);  //Create the stream reader
            string sDoc = sr.ReadToEnd();      //read the stream that represents the Webdoc
            sr.Close();                         //close the stream  
            HTMLDocument ProfileHTML = new HTMLDocument();
            oDoc = (IHTMLDocument2)ProfileHTML;
            oDoc.write(sDoc);
            oDoc.close();       //--- Error occurs here
            return (HTMLDocumentClass)oDoc;
        }
    }
}

Ответы [ 4 ]

2 голосов
/ 14 марта 2011

Если ваша страница работает в контексте HTTPS, но ссылается на элементы с других сайтов через HTTP, вы получите это предупреждение безопасности.Убедитесь, что на все ссылочные материалы (например, изображения, таблицы стилей и т. Д.) В URL-адресе указан HTTPS.

1 голос
/ 03 ноября 2015

Перед созданием объекта HTMLDocument удалите весь код JavaScript, здесь мой VB-код:

response = Regex.Replace(resp, "<script.*?</script>", String.Empty, RegexOptions.Singleline)
1 голос
/ 14 марта 2011

HttpWebRequest происходит на стороне сервера, а не на клиенте, поэтому это не является причиной предупреждения вашего клиента.Единственный способ, которым браузер реагировал бы так, - это если бы у вас были небезопасные вызовы на самой разметке.

0 голосов
/ 15 марта 2011

Попробуйте поиграть с настройками безопасности в Сервис-> InternetOptions-> Дополнительно-> Безопасность.Например, «Разрешить запуск активного содержимого из файлов на моем компьютере ..»

...