请求的资源上不存在“Access-Control-Allow-Origin”标头。因此不允许原点访问

时间:2017-01-04 09:49:29

标签: cors sapui5 http-get sap-web-ide

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

为此,代码如下:

Public Module PublishAllProjects
Sub PublishAllProjectsInSolution()
    ' Before using this macro, the certficate and security zone must be set.
    ' You can do this by publishing the projects using the VS IDE.
    Dim slnbld2 As SolutionBuild2 = CType(DTE.Solution.SolutionBuild, SolutionBuild2)

    'Save changes to all projects and clean.
    For Each proj As Project In DTE.Solution.Projects
        proj.Save()
    Next
    slnbld2.Clean(True)

    For Each proj As Project In DTE.Solution.Projects
        'Verify project is a windows application or console application before continuing
        Dim outputType As Integer = proj.Properties.Item("OutputType").Value
        If outputType <> 0 AndAlso outputType <> 1 Then
            Continue For
        End If

        'GenerateManifests and SignManifests must always to true for publishing to work. 
        proj.Properties.Item("GenerateManifests").Value = True
        proj.Properties.Item("SignManifests").Value = True
        proj.Save()

        slnbld2.BuildProject(proj.ConfigurationManager.ActiveConfiguration.ConfigurationName, proj.UniqueName, True)

        'only publish if build was successful.
        If slnbld2.LastBuildInfo <> 0 Then
            MsgBox("Build failed for " & proj.UniqueName)
        Else
            slnbld2.PublishProject(proj.ConfigurationManager.ActiveConfiguration.ConfigurationName, proj.UniqueName, True)
            If slnbld2.LastPublishInfo = 0 Then
                MsgBox("Publish succeeded for " & proj.UniqueName)
            Else
                MsgBox("Publish failed for " & proj.UniqueName)
            End If
        End If
    Next

    End Sub
End Module

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

但是当我为url设置一个值并测试按钮时, 我明白了,

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

我们的想法是检查网址的状态,并从网址状态设置状态。    enter image description here

如何防止这种情况发生? BR Suraj N

2 个答案:

答案 0 :(得分:1)

这是针对一类名为Cross-Site Request Forgeries的攻击的浏览器保护。

正如错误消息中所述,除非链接的网站(在本例中为https://my3 **** 6.sapbydesign.com/sap/byd/runtime/)添加了相应的{{ {3}}标题为其回复。

答案 1 :(得分:0)

问题正在发生,因为您的App(正在开始获取的那个)在域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