我正在使用Node with Express和Twitter API应用程序的twit和express-cors模块 .
我得到了所有与jQuery一起工作的东西,我现在正试图让它与vanilla JS一起工作 .
我收到控制台消息“XMLHttpRequest无法加载https://api.twitter.com/1.1/search/tweets.jsonq=%23cats&callback=? . 请求的资源上没有'Access-Control-Allow-Origin'标头 . 因此,不允许来源'http://127.0.0.1:3000' . 响应的HTTP状态代码为404.”
无论是否使用callback参数都会发生这种情况 .
所以这是相关的节点代码:
var express = require('express'),
cors = require('express-cors'),
Twit = require('twit'),
path = require('path');
var T = new Twit({
consumer_key: ''
, consumer_secret: ''
, access_token: ''
, access_token_secret: ''
})
var app = express();
app.use(cors({
allowedOrigins: [
'twitter.com'
]
}))
app.get('/api/search/:hashtag', function(req, res){
T.get('search/tweets', { q: '#cats', count: 5 }, function(err, data, response) {
res.jsonp(data); // jsonp or json, neither seem to work
console.log(data)
});
});
app.param('hashtag', function(req, res, next, hashtag){
req.hashtag = hashtag;
next();
});
AJAX调用如下:
document.getElementById("submitButton").addEventListener("click", function(){ getCORS(url, success); });
function getCORS(url, success) {
var xhr = new XMLHttpRequest();
xhr.open('GET', url);
xhr.onload = success;
xhr.send();
return xhr;
}
getCORS('https://api.twitter.com/1.1/search/tweets.jsonq=%23cats', function(request){
response = request.currentTarget.response || request.target.responseText;
console.log(response);
});
它正在使用没有express-cors模块的jQuery版本 . 我在这里错过了什么?
1 回答
看起来你正在两次安装cors中间件 . 看看是否摆脱了第一个
app.use(cors())
修复它 . 然后你可以尝试使用curl来测试它 .curl -v -H "Origin: https://twitter.com" http://localhost:3000/
用您正在使用的端口替换端口3000 .