尝试在Netweaver 7.40上进行身份验证时出现CORS问题

2020-08-15 03:45发布

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


嗨,

我正在尝试在未在Netweaver 7.40系统上运行的Web应用程序中进行身份验证和检索x-csrf令牌。

如果我设置了自定义标头(" Authorization":" Basic ....."),则浏览器将发送OPTIONS预检请求,由于缺少CORS标头,该请求被拒绝了。 如果预检请求被拒绝,则随后的所有请求(例如检索x-csrf令牌的GET请求)都会被自动阻止。

是否可以为OPTIONS请求设置cors标头? 在Electron环境中,该请求被允许通过并且可以正常工作,因为没有OPTIONS飞行前请求,并且Electron似乎没有遵守CORS标头。

(18.3 kB)

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


嗨,

我正在尝试在未在Netweaver 7.40系统上运行的Web应用程序中进行身份验证和检索x-csrf令牌。

如果我设置了自定义标头(" Authorization":" Basic ....."),则浏览器将发送OPTIONS预检请求,由于缺少CORS标头,该请求被拒绝了。 如果预检请求被拒绝,则随后的所有请求(例如检索x-csrf令牌的GET请求)都会被自动阻止。

是否可以为OPTIONS请求设置cors标头? 在Electron环境中,该请求被允许通过并且可以正常工作,因为没有OPTIONS飞行前请求,并且Electron似乎没有遵守CORS标头。

(18.3 kB)
付费偷看设置
发送
2条回答
超级大咸鱼
1楼-- · 2020-08-15 03:50

Hi Tomas,

CORS问题与令牌或授权问题完全无关。 它只是一种浏览器安全功能,它阻止了任何跨域http访问。 如果您在开发环境中工作,则有一种快速简便的方法(但安全性较低)可以禁用跨域检查。 我将不详细介绍该问题以及其他解决问题的方法,因为已经有很多材料在讨论该主题。 一个示例是下面的博客文章:

https ://blog.container-solutions.com/a-guide-to-solving-those-mystifying-cors-issues

N-Moskvin
2楼-- · 2020-08-15 03:59

SAP网关未添加或未添加 似乎可以选择在对OPTIONS请求的响应中添加CORS标头。 这就是为什么现代浏览器会阻止客户端的后续请求。 因此,即使带有" x-csrf-token":" fetch"标头的请求也不会通过。


浏览器发送OPTIONS预检信息,因为我们需要修改标准的HTTP标头,以添加上述的" Authoriztation"标头和" x-csrf-token":" fetch"标头。

 let request = new XMLHttpRequest();
 request.open('GET',this.serviceURL);
 request.setRequestHeader('Authorization','Basic'+ basicAuthToken); //<-Triggers OPTIONS预检
 request.setRequestHeader('x-csrf-token','fetch');
 request.addEventListener('load',function(event){
    如果(request.status> = 200 && request.status <300){
       responseCallback(request);
    }其他{
       console.warn(request.statusText,request.responseText);
    }
  });
  request.send(); 

一周热门 更多>