首页 文章

在sapui5中使用Web服务时出现401错误

提问于
浏览
0

我正在通过我的sapui5表实现一个Web服务

var oModel = new sap.ui.model.odata.ODataModel("http://mywebservice.com/security.svc", false);
sap.ui.getCore().setModel(oModel);

当我在Web浏览器中启动我的代码并检查元素时,我收到以下错误:

无法加载资源:服务器响应状态为401(未授权)

XMLHttpRequest无法加载http://mywebservice.com/security.svc/ $元数据 . 请求的资源上没有'Access-Control-Allow-Origin'标头 . 因此不允许原点'http://localhost:53457'访问 . 响应具有HTTP状态代码401 .

我也在Fiddler测试了它,我得到:

HTTP / 1.1 401未经授权
缓存控制:私有
服务器:Microsoft-IIS / 8.0
Set-Cookie:ASP.NET;路径= /;仅Http
X-AspNet-Version:4.0.30319
WWW-Authenticate:谈判
WWW-Authenticate:NTLM
X-Powered-By:ASP.NET
日期:2015年6月9日星期二19:33:51 GMT
内容长度:0
代理支持:基于会话的身份验证

任何有关如何修复401错误的帮助将不胜感激 .

2 回答

  • 0

    创建一个新的 ODataModel ,它会尝试为您调用的服务获取 metadata . 它基本上是XMLHttpRequest到不同的域( http://mywebservice.com ),而不是你的页面( localhost ) . 因此浏览器会阻止它,因为出于安全原因,它通常允许同一来源的请求 . 阅读same-origin policy

    Solution: 当您想要进行跨域请求时,您需要做一些不同的事情 . 原点(带有JavaScript的页面所在的位置)和目标: http://mywebservice.com (JavaScript试图访问的域)域必须完全相同 . 有关如何实现这一目标的教程是使用CORS .

    在.NET服务器中,您可以在 web.config 中进行配置,如下所示

    <system.webServer>
       <httpProtocol>
         <customHeaders>
           <add name="Access-Control-Allow-Origin" value="your_clientside_websiteurl" />
         </customHeaders>
       </httpProtocol>
     <system.webServer>
    
  • 0

    只需在桌面上克隆chrome的快捷方式,然后在快捷方式属性中添加chrome可执行文件路径末尾的参数--disable-web-security,例如“C:\ Program Files \ Google \ Chrome \ Application \ chrome.exe “--disable-web-security

    注意:在一个空格后在目标位置添加该参数--disable-web-security

相关问题