Как добавить «Access-Control-Allow-Origin» к запрашиваемому ресурсу с помощью пользовательской схемы с помощью CefSharp - PullRequest
0 голосов
/ 28 января 2019

Использование XMLHttpRequest, который является предметом моего предыдущего вопроса с пользовательской схемой. Я загружаю локальные файлы.Для тестирования я использовал аргумент disable-web-security, но я не хочу использовать браузер с отключенным этим параметром.

Когда включена функция disable-web-security, я получаю

На запрошенном ресурсе отсутствует заголовок «Access-Control-Allow-Origin».

Как (или где) я могу добавить это в заголовок или исправить его другим способом.

Сначала я попытался использовать AddCrossOriginWhitelistEntry, но я не знаю, что вставить. Моя схема - test: // и я вызываю, например, test: //local/folder/3Markets.xlsx.Источником веб-страницы является https://product.company.de

CefSharp.Cef.AddCrossOriginWhitelistEntry("test://local", "test", "product.company.de", True)

и это

CefSharp.Cef.AddCrossOriginWhitelistEntry("test://local", "test", "", True)

Но, честно говоря, я не понимаю, что я должен здесь поставить.

Я тожеЯ подумал, что смогу решить эту проблему с помощью своей пользовательской схемы.

Dim cs As New CefCustomScheme With {
        .SchemeName = DBSchemeHandler.DBSchemeName,
        .SchemeHandlerFactory = New DBSchemeHandler,
        .IsStandard = True,   'DONT THINK THIS IS NEEDED
        .IsCorsEnabled = True   'DONT THINK THIS IS NEEDED
    }
    dbSurferSettings.RegisterScheme(cs)

Я подумал, что в ответе мне нужно добавить этот заголовок.Или это запрос?

Public Overrides Function GetResponse(response As IResponse, ByRef responseLength As Long, ByRef redirectUrl As String) As Stream

Dim aURI As New Uri(response)
Dim fileName As String = aURI.AbsolutePath

Dim bytes As Byte() = File.ReadAllBytes(fileName)
Dim mStream = New MemoryStream(bytes)

If mStream Is Nothing Then
    Return Nothing
Else
    Stream = mStream
    Stream.Position = 0
    responseLength = Stream.Length
    Dim fileExtension = Path.GetExtension(fileName)
    MimeType = GetMimeType(fileExtension)
    StatusCode = CInt(HttpStatusCode.OK)
    response.Headers.Add("Access-Control-Allow-Origin", "*")
    Return mStream
End If
End Function

1 Ответ

0 голосов
/ 28 января 2019

Для тех, кто рассматривает это.Комментарии Amaitland исправили мои проблемы.

Домен веб-сайта https://product.company.de, и моя схема тестовая.Таким образом, один из способов заключается в следующем.

CefSharp.Cef.AddCrossOriginWhitelistEntry("https://product.company.de", "test", "", True)

Также другая вещь, которую я делал неправильно, я добавлял это при запуске приложения.Но это возвращалось ложным.Вы должны добавить это, как только браузер будет на самом деле на сайте, в моем примере https://product.company.de. Установка всех остальных настроек при запуске означает, что его возврат падает.Я поместил его в событие FrameLoadEnd.

...