使用具有自定义方案的XMLHttpRequest which is the subject of my previous question,我正在加载本地文件。为了进行测试,我使用了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
答案 0 :(得分:0)
对于任何对此进行审查的人。 Amaitland的评论纠正了我的问题。
该网站的域名为https://product.company.de,我的方案为test。因此,一种方法如下。
CefSharp.Cef.AddCrossOriginWhitelistEntry("https://product.company.de", "test", "", True)
另外我做错的另一件事是我在应用程序启动时添加了它。但是它返回了错误。在我的示例https://product.company.de中,您需要在浏览器实际出现在网站上之后添加它。在启动时用所有其他设置进行设置意味着它会返回跌落。我已将其放入FrameLoadEnd事件。