【问题标题】:Cross origin requests are only supported for protocol schemes: http跨域请求仅支持协议方案:http
【发布时间】:2015-10-03 19:10:15
【问题描述】:

这是一个通用的 JavaScript 问题,但它在使用 Splunk JavaScript SDK 的代码中弹出...错误是:

XMLHttpRequest 无法加载 file:///C:/proxy/services/auth/login?output_mode=json。跨源请求仅支持协议方案:http、data、chrome、chrome-extension、https、chrome-extension-resource。 jquery.min.js:4

<!DOCTYPE html>
<html>
<head>
</head>
<body>
<script type="text/javascript" src="json2.js"></script>
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script>
<script type="text/javascript" src="prettify.js"></script>
<script type="text/javascript" src="bootstrap.tabs.js"></script>
<script type="text/javascript" src="bootstrap.dropdown.js"></script>
<script type="text/javascript" src="jquery.placeholder.min.js"></script>
<script type="text/javascript" src="splunk.js"></script>

<script type="text/javascript" charset="utf-8">
console.log('a');
var http = new splunkjs.ProxyHttp("/proxy");
var service = new splunkjs.Service(http, {
    username: "admin",
    password: "Moravac123223",
    scheme: "https",
    host: "localhost",
    port: "8089",
    version: "5.0"
});
 console.log('b');
// First, we log in
service.login(function(err, success) {
    // We check for both errors in the connection as well
    // as if the login itself failed.
    if (err || !success) {
        console.log("Login failure. Please check your server hostname and authentication credentials.");
        done(err || "Login failed");
        return;
    } 

    // Now that we're logged in, let's get a listing of all the apps.
    service.apps().fetch(function(err, apps) {
        if (err) {
            console.log("There was an error retrieving the list of applications:", err);
            done(err);
            return;
        }

        var appsList = apps.list();
        console.log("Applications:");
        for(var i = 0; i < appsList.length; i++) {
            var app = appsList[i];
            console.log("  App " + i + ": " + app.name);
        } 

        done();
    });
});
</script>
</body>
</html>

【问题讨论】:

  • 需要从本地 Web 服务器 (http://) 而非 file:// 协议加载页面
  • 有听起来无知的风险,但我该如何做到这一点?使用 node.js 或其他类型的服务器,然后提供页面?还是更简单的方法?
  • 没错……还有一些非常轻量级的简单http服务器

标签: javascript jquery splunk


【解决方案1】:

我同意 Charlietfl 的观点。如果你有 apache 和/或 IIS,它应该是一个非常快速的测试来验证它是否修复了它。

如果您是 Web 服务器的新手,请不要担心他们有像 Xampp 这样的应用程序,可以从一个可执行文件设置您的整个 LAMP 堆栈。

由于您正在对自己的服务器进行身份验证,因此您可能(不会)遇到这种情况,但是我在运行本地 RESTful 应用程序时遇到了麻烦,并且在等待您在后端使用的内容时,我需要执行以下操作:setHeader ('访问控制允许来源','*');到我的回复的标题。

如果您决定创建某种企业级 Web 服务,显然您不想要这样的东西,但是对于本地测试,这通常会解决我遇到的随机 CORS 问题。

祝你的网络应用好运!!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-06-29
    • 2019-12-05
    • 2018-06-27
    • 1970-01-01
    • 2017-10-11
    • 2018-04-16
    • 2018-02-25
    相关资源
    最近更新 更多