使用AngularJS连接到Splunk的REST API,如何解决CORS问题?

时间:2015-07-09 05:34:49

标签: angularjs cors splunk

当我尝试从AngularJS发布数据时,我收到以下错误。

  

XMLHttpRequest无法加载https://localhost:8089/services/auth/login。   请求中不存在“Access-Control-Allow-Origin”标头   资源。因此不允许来源“http://localhost:8080”   访问。

这是angularjs代码

var app = angular.module('myApp', []);
sessionkey='';
var req = {
    method: 'POST',
    url: 'https://localhost:8089/services/auth/login',
    headers : {
      'Content-Type':'application/x-www-form-urlencoded',
      'Accept':'*/*'

    },
    data : {
      username : 'admin',
      password : 'admin',
      output_mode : 'json' 
    }
};



app.controller('myController', function($scope, $http) {
$http(req).success(function($scope, $http){
    sessionKey= retrieveSessionKey($scope, $http);

});

});

我如何解决这个问题?

感谢任何输入!

2 个答案:

答案 0 :(得分:1)

来自Splunk dev site

  

在Splunk Web之外运行的Web应用程序需要使用代理服务器或跨源资源共享(CORS)与Splunk服务器进行通信,因为同源策略(SOP)浏览器安全策略。

     

如果您使用的是CORS,则需要配置Splunk服务器以允许您的网站使用CORS连接与其进行通信。为此,请将您的网站地址作为可信HTTP源添加到server.conf配置文件中的crossOriginSharingPolicy属性。

例如,将此节添加到$SPLUNK_HOME/etc/system/local/server.conf配置文件,然后重新启动Splunk:

[httpServer]
crossOriginSharingPolicy = your_site_address

答案 1 :(得分:0)

即使在设置server.conf之后,仍然为仍然存在CORS问题的其他人留下笔记:

我还在$ SPLUNK_HOME / etc / system / local / *。conf中设置了 server.conf,web.conf和inputs.conf ,并添加了以下内容:

在server.conf下添加以下行

[httpServer] 
crossOriginSharingPolicy = *

在web.conf下添加以下行

[settings]
crossOriginSharingPolicy = *

在inputs.conf下添加以下行

[http]
crossOriginSharingPolicy = *

我从splunk answer page

找到了此信息

设置完成后,一切开始工作。