【发布时间】:2021-02-16 15:39:37
【问题描述】:
在处理批处理响应期间,Chrome 出现错误。我在 Firefox、Edge 和 Chromium 上进行了尝试,只有最新版本的 Chrome 才会出现错误。在此示例中,我使用自己的本地 OData 服务器:
我在这里尝试阅读https://services.odata.org/V2/OData/OData.svc/
调试后我发现了区别在哪里:https://openui5.hana.ondemand.com/resources/sap/ui/thirdparty/datajs.js
我比较了 Chrome 和 Edge,我注意到不同之处在于标题和读取方式。首先,您可以从 Edge 和 Chrome 中看到属性 x.headers。在 Edge 上,标头不包含 application/json。我已经在 Chrome 上调试并删除了其余部分,所以它看起来像 Edge,然后就可以工作了。
它自己的 BATCH 如下所示:
--batchresponse_678d942c-694d-45a8-80ea-9174b251f69b
Content-Type: application/http
Content-Transfer-Encoding: binary
HTTP/1.1 200 OK
Cache-Control: no-cache
DataServiceVersion: 2.0;
Content-Type: text/plain;charset=utf-8
3
--batchresponse_678d942c-694d-45a8-80ea-9174b251f69b
Content-Type: application/http
Content-Transfer-Encoding: binary
HTTP/1.1 200 OK
Cache-Control: no-cache
DataServiceVersion: 1.0;
Content-Type: application/json;charset=utf-8
{
"d" : [
{
"__metadata": {
"uri": "https://services.odata.org/V2/OData/OData.svc/Categories(0)", "type": "ODataDemo.Category"
}, "ID": 0, "Name": "Food", "Products": {
"__deferred": {
"uri": "https://services.odata.org/V2/OData/OData.svc/Categories(0)/Products"
}
}
}, {
"__metadata": {
"uri": "https://services.odata.org/V2/OData/OData.svc/Categories(1)", "type": "ODataDemo.Category"
}, "ID": 1, "Name": "Beverages", "Products": {
"__deferred": {
"uri": "https://services.odata.org/V2/OData/OData.svc/Categories(1)/Products"
}
}
}, {
"__metadata": {
"uri": "https://services.odata.org/V2/OData/OData.svc/Categories(2)", "type": "ODataDemo.Category"
}, "ID": 2, "Name": "Electronics", "Products": {
"__deferred": {
"uri": "https://services.odata.org/V2/OData/OData.svc/Categories(2)/Products"
}
}
}
]
}
--batchresponse_678d942c-694d-45a8-80ea-9174b251f69b--
[更新]
所以,这越来越奇怪了。我刚刚发现在 Chrome 中它可以在隐身模式下工作,但不能在正常模式下工作。我试过用Northwind,它是一样的。它仅适用于隐身模式。我正在使用来自https://openui5.hana.ondemand.com/resources/sap-ui-core.js 的最新版本的 UI5,我正在使用来自https://github.com/SAP/openui5-masterdetail-app 的模板。
我使用的是 Chrome 版本 88.0.4324.150,我也尝试过删除缓存
在 openui5-masterdail-app 我只修改了 oData 服务:
“uri”:“https://cors-anywhere.herokuapp.com/https://services.odata.org/V2/OData/OData.svc/”,
和
Master.view.xml
<List
id="list"
width="auto"
class="sapFDynamicPageAlignContent"
items="{
path: '/Suppliers'
}"
<items>
<ObjectListItem
title="{Name}"
【问题讨论】:
-
如果你的 chrome 是什么版本? Edge v90 中的 PDFViewer 存在问题,因此这可能是一个更大的问题。
-
@BoghyonHoffmann 感谢您的提示。我已经更新了问题。
-
@Marc 我已经更新了这个问题。如果您在 Edge 的隐身模式下也遇到问题,您可以尝试一下吗?
-
我认为有多种因素导致这个问题出现。我建议选择一个不同的、维护得更好的 OData 服务(例如 services from SAP ES5 system 之一),并避免使用
cors-anywhere,但使用 stackoverflow.com/a/53878337/5846045 中提到的文档化指南
标签: javascript google-chrome odata sapui5