我正在尝试以这种方式在 SAP UI5 中创建 OData 模型:
new sap.ui.model.odata.ODataModel("http://services.odata.org/Northwind/Northwind.svc/");
但我收到一个 501 未实现的错误!你能检查一下有什么问题吗?
谢谢
据我所知,该服务并未真正启用 CORS。我自己的例子在这里也有同样的问题,只要我不使用某种代理,我就会收到这个错误。其背后的原因是,当您向服务发送复杂请求时,您的浏览器会自动发送一个所谓的预检请求(在实际 GET 之前),这不是 GET 请求,而是 HTTP OPTIONS 请求. 目前,所有 odata.org 示例服务都会针对此类请求返回 501 错误。例如,您可以使用 UI5 附带的 simpleProxyServlet,当然也可以使用任何其他可以解决此问题的代理。
您收到此错误,因为您的浏览器将由于相同的 Origin Policy 拒绝此请求。这是你应该做的:
将应用程序部署在与您要调用的服务相同的服务器或域上,以便两个资源位于同一来源(如果可能)
在浏览器中禁用同源策略进行本地测试。通过使用以下命令运行 Chrome 来运行 Chrome:[your-path-to-chrome-installation-dir]\chrome.exe --disable-web-security --user-data-dir。确保在运行命令之前关闭所有 Chrome 实例。这允许所有网站打破同源策略并直接连接到远程服务。
-> 不要在您的生产应用程序中执行此操作,因为它会带来安全风险。
使用代理
以下文档应该可以帮助您更多地理解并实施:
请使用“proxy/http/services.odata.org/Northwind/Northwind.svc”,我认为它可以解决您的问题!