Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/extjs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从JavaScript将数据发布到SDC HTTP服务器url显示CORS问题_Cors_Streamsets - Fatal编程技术网

从JavaScript将数据发布到SDC HTTP服务器url显示CORS问题

从JavaScript将数据发布到SDC HTTP服务器url显示CORS问题,cors,streamsets,Cors,Streamsets,我使用Streamsets管道从浏览器中传输数据。为此,我创建了一个源于HTTP服务器的管道来发布来自浏览器Javascript的数据,并尝试使用REST客户端写入该URL,它成功地写入了。响应头已在SDC.properties文件中设置 http.access.control.allow.origin=* http.access.control.allow.headers=origin, content-type, accept, authorization, x-requested-by,

我使用Streamsets管道从浏览器中传输数据。为此,我创建了一个源于HTTP服务器的管道来发布来自浏览器Javascript的数据,并尝试使用REST客户端写入该URL,它成功地写入了。响应头已在SDC.properties文件中设置

http.access.control.allow.origin=*
http.access.control.allow.headers=origin, content-type, accept, authorization, x-requested-by, x-ss-user-auth-token, x-ss-rest-call
http.access.control.allow.methods=GET, POST, PUT, DELETE, OPTIONS, HEAD
但当我尝试使用XMLHTTPRequest从JavaScript编写一些数据时,它会为飞行前请求抛出错误。下面是JavaScript代码:

  var http = new XMLHttpRequest();
  var value = '{ "prop1": "value 2", "prop2": "value 2" }';
  var url ='http://13.68.93.97:8100/'
  var async = true
 if ('withCredentials' in http) {
    http.open('OPTIONS', url, async);
} else if (typeof XDomainRequest != "undefined") {
    http = new XDomainRequest(); //for IE
    http.open('OPTIONS', url);
} else {
    http.open('OPTIONS', url, async);
}
    http.open('POST', url, true);
    http.setRequestHeader('Content-Type', 'application/json; charset=utf-8');
    http.setRequestHeader('X-SDC-APPLICATION-ID', 'testApp1');
http.setRequestHeader("Access-Control-Allow-Origin", "*");
http.setRequestHeader('Access-Control-Allow-Methods', "POST, OPTIONS, GET");
http.setRequestHeader('Access-Control-Allow-Credentials', "true");
http.setRequestHeader('Access-Control-Expose-Headers', "X-Region");
http.setRequestHeader("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept,Accept-language");
http.withCredentials = true;
http.onreadystatechange = function () {
    if (http.readyState == 4 && http.status == 200) {
        console.log(http.responseText);
    }
}
http.send(value); 
执行上述代码时引发错误:

无法加载XMLHttpRequest。回应 飞行前请求未通过访问控制检查:否 “Access Control Allow Origin”标头出现在请求的服务器上 资源。因此,不允许访问源“”


任何帮助都会很有帮助。谢谢

更新-Data Collector在2017年3月发布的2.4.0.0版中添加了CORS支持

StreamSets Data Collector当前不支持中的COR-文件中的那些属性用于sdc web UI。我已经提交了Jira,但我对你的用例很好奇。您只是在使用浏览器进行实验,还是看到了用户通过JavaScript向SDC发送数据的生产用例

如果您有一个生产用例,请对该Jira留下评论,我们将研究向HTTP服务器源添加COR

如果您只是想要一种轻松发送数据的方式,您有以下几种选择:

  • 从命令行使用curl:

    curl http://localhost:8000/ -H 'X-SDC-APPLICATION-ID: bob' -d '{"a":"b"}'
    
  • 安装Chrome扩展,例如禁用CORS在Chrome中的检查

  • 使用
    --禁用网络安全
    选项启动Chrome