简单的XMLHttpRequest失败,Access-Control-Allow-Origin标头为null

时间:2016-02-08 22:26:44

标签: javascript xmlhttprequest http-post cors

我试图从here中公开的API中获取一个简单的随机引用。它基本上想要一个没有任何授权的POST请求。我想使用XMLHttpRequests实现这一点。这是代码:

var xhr = new XMLHttpRequest();
var forismaticUrl = 'http://api.forismatic.com/api/1.0/';
var params = 'method=getQuote&format=json&lang=en';

xhr.withCredentials = true;
xhr.responseType = 'json';
xhr.open('POST', forismaticUrl, true);

xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');

xhr.onload = function(response) {
    console.log('helloooo', response);
    console.log(this);
    console.log(this.responseText);
};

xhr.send(params);

无论我尝试什么,我的XMLHttpRequests总是失败并出现错误:

XMLHttpRequest cannot load http://api.forismatic.com/api/1.0/. No 'Access-Control-Allow-Origin' header is present on the requested resource

我在这里做错了什么?任何人都可以帮助代码并向我展示使用forismatic API的XMLHttpRequest示例吗?谢谢你的帮助!

1 个答案:

答案 0 :(得分:1)

你没有做错任何事。您的浏览器期望API服务支持CORS,但事实并非如此。您可以尝试turn off CORS on your browser来帮助调试,但您不应该那样去制作。

服务可能支持CORS的年轻和弱势兄弟JSONP

如果没有,并且此API服务不愿意进行现代化,并且如果没有其他可用选项,则您需要在服务器端进行API调用。