javascript - 纯文本文件的跨域ajax请求

标签 javascript cors

我正在努力解决一个看似简单的问题。 我有一个 json 数据,它作为纯文本文件存储在某个服务器上,我需要在 JavaScript 中加载它。我收到错误

XMLHttpRequest cannot load http://www.cgarea.com/ary_telemetry/messages.json. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://fiddle.jshell.net' is therefore not allowed access.

我正在阅读有关 CORS 的内容并测试不同的解决方案,但没有成功。 如果目标 URL 是 PHP 脚本,我可以设置一个 header('Access-Control-Allow-Origin: *'),但它只是一个文本文件。 我怎样才能加载这个?我是否需要创建一个小型 PHP 脚本来 返回文件内容?

我在 http://jsfiddle.net/rt6jj5tv/6/ 上放置了最少的代码

感谢任何提示,谢谢。

JS代码:

function GetMessages()
{
    //$.getJSON("http://www.cgarea.com/messages.json", GetMessagesCB);      
  $.ajax({
            type: 'GET',
            url: "http://www.cgarea.com/messages.json",
            dataType: "text/plain",
            success: GetMessagesCB
            });
}

function GetMessagesCB(data)
{
    console.debug(data);
    var ui = document.getElementById("Message");
    ui.innerHTML = data;
}

GetMessages();

最佳答案

正如您所提到的,您需要运行 JSONP 或 CORS 代理才能通过 AJAX 从另一个域检索文本文件。这是浏览器内置的安全机制。

您可以将 header 添加到您自己的 PHP 脚本中来实现此目的。另一种可能的方法是 use YQL .

代码:

function GetMessages()
{
  $.getJSON("http://query.yahooapis.com/v1/public/yql",
    {
      q:      "select * from json where url=\"http://www.cgarea.com/messages.json\"",
      format: "json"
    },
    function (data) {
      if (data.query.results) {
        GetMessagesCB(data.query.results.json);
      } else {
        alert('bad');
      }
    }
  );
}

function GetMessagesCB(data)
{
    console.debug(data);
    var ui = document.getElementById("Message");
    ui.innerHTML = JSON.stringify(data);
}

GetMessages();

您的 fiddle 已更新:http://jsfiddle.net/rt6jj5tv/7/

关于javascript - 纯文本文件的跨域ajax请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35905691/

相关文章:

Laravel 5 CORS 中间件不适用于路由组

javascript - 禁用缓存后,Chrome CORS 请求会更快吗?

javascript - 模块和脚本有什么区别?

javascript - 显示密码字段的 Vue.js 组件

JavaScript 匿名函数语法

javascript - Braintree 集成 - 无法在服务器端代码中访问 javascript nonce

angularjs - 在 Ionic 应用程序中一起使用 CORS 和 CSRF

javascript - 如何通过使用 ajax 从数据库获取 json 数据,使用 javascript 将 case 添加到 switch 语句?

javascript - 为什么 Access-Control-Allow-Origin 在 Codeigniter Rest-Server 中不起作用

javascript - 飞行前使用 http 401 的 Ajax CORS 请求