【问题标题】:Getting CORS Errors with Splunk使用 Splunk 获取 CORS 错误
【发布时间】:2017-07-24 04:46:27
【问题描述】:

我正在尝试使用在浏览器中运行的 jQuery 脚本将数据写入 Splunk。我的“inputs.conf”文件中已经包含以下内容:

crossOriginSharingPolicy = *

但是,我得到的错误是:

Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at http://myserver.myco.com:8088/services/collector/event.  
(Reason: missing token 'content-type' in CORS header 'Access-Control-Allow-Headers' from CORS preflight channel).  

我还没有找到从 Splunk 设置“Access-Control-Allow-Headers”的方法。

这是 JS 代码的 sn-p,虽然我不确定是否有必要显示它(注释行是我绝望地尝试过的东西,但它们没有任何区别):

    var dfr = $.ajax({
        url: config.endpoint,
        method: 'post',
//      headers: {
//          "Access-Control-Allow-Origin" : "*",
//          "Access-Control-Allow-Methods" : "GET,POST,PUT,DELETE,OPTIONS",
//          "Access-Control-Allow-Headers": "Content-Type, Access-Control-Allow-Headers, Authorization, X-Requested-With"
//      },
//      crossDomain: true,
        beforeSend: function (xhr) {
            xhr.setRequestHeader("Authorization", header);
        },
        data: JSON.stringify({ event: post }),
        contentType: "application/json; charset=utf-8",
        dataType: "json"
    });

有什么建议吗?我是否需要通过代理访问 Splunk?

【问题讨论】:

    标签: javascript jquery cors splunk


    【解决方案1】:

    您可能需要设置contentType: application/x-www-form-urlencoded 并将您的数据格式化(也就是说,基本上就像一个普通的查询字符串:名称-值对,名称后跟=,然后是值,名称为-由& 分隔的值对)。

    那是因为 Splunk 似乎根本不支持 application/json 请求。

    Discussion elsewhere 表示它期望 POSTsapplication/x-www-form-urlencoded

    但这只能解决content-type 问题。因为您的请求发送了一个Authorization 请求标头,所以它本身也会触发一个CORS preflight OPTIONS request 的触发器。

    如果 Splunk 发回的 Access-Control-Allow-Headers 标头不包含 Authorization,那么您将遇到与 Content-Type 相同的问题。

    但不知道,也许 Splunk 在幕后已经将 Authorization 包含在它发回的 Access-Control-Allow-Headers 响应标头中的标头名称集中。

    【讨论】:

      猜你喜欢
      • 2018-01-12
      • 1970-01-01
      • 2018-10-25
      • 1970-01-01
      • 1970-01-01
      • 2020-07-07
      • 2019-01-23
      • 2020-12-14
      • 1970-01-01
      相关资源
      最近更新 更多