0

我正在通过向我的 ui5 应用程序中的按钮添加 http get 功能来检查特定 url 当前是否已启动。

为此,代码如下:

        _onButtonPress: function () {

         var xhr = new XMLHttpRequest();

        xhr.open('GET', this.getView().byId("sap_Responsive_Page_0-content-sap_ui_layout_form_SimpleForm-1476966827717-content-sap_m_Input-1476966871600").getValue(), true);
        xhr.send();
        xhr.onreadystatechange = processRequest;
        function processRequest(e) {
if (xhr.readyState == 4 && xhr.status == 200) {
    var response = (xhr.responseText);
    alert(response);    }
}},

对于 url 输入,我们仅使用 https 请求。

但是当我为 url 输入一个值并测试按钮时,我得到了,

XMLHttpRequest 无法加载https://my3 ****6.sapbydesign.com/sap/byd/runtime/(输入的 url)。请求的资源上不存在“ Access-Control-Allow-Origin ”标头。因此,不允许访问源“ https://application browser url”。

这个想法是检查 url 的状态并从 url 状态设置状态状态。 在此处输入图像描述

我怎样才能防止这种情况发生?Br Suraj N

4

2 回答 2

1

这是针对称为跨站点请求伪造的一类攻击的浏览器保护。

如错误消息中所述,除非链接的网站(在本例中为https://my3Access-Control-Allow-Origin ****6.sapbydesign.com/sap/byd/runtime/)在其响应中添加适当的标头,否则您无法使其正常工作.

于 2017-01-04T09:54:03.990 回答
0

问题正在发生,因为您的应用程序(启动获取的应用程序)托管在域 A 中,而服务托管在域 B 中。出于安全原因,浏览器不允许您这样做。

解决它的一种方法是让服务器允许来自您的域的某些 Http 动词。但是,如果您无法控制服务器端,您将无法做到这一点。

另一种方法是在您的终端上创建一个代理服务器并将其配置为将所有请求中继到您打算发出获取请求的原始服务器。

然后在您的原始应用程序上,您向代理服务器发出 get。

您可以直接在 Eclipse 中执行此操作:http: //help.sap.com/saphelp_nw74/helpdata/de/2d/3f5fb63a2f4090942375df80abc39f/content.htm

或者您也可以在节点上启动代理:

https://www.npmjs.com/package/gulp-connect-proxy

于 2017-01-07T19:52:39.227 回答