【发布时间】:2016-06-21 09:18:18
【问题描述】:
我正在尝试使用 $http 从站点获取信息,老实说,我已经查看了所有内容并尝试了很多不同的东西,但我不确定如何设置“Access-Control-Allow”的标题-起源'。我不确定我是否只是完全误解了或其他什么,但任何帮助都非常感谢,提前非常感谢!
XMLHttpRequest 无法加载 http://nhlwc.cdnak.neulion.com/fs1/nhl/league/teamroster/NJD/iphone/clubroster.json。请求的资源上不存在“Access-Control-Allow-Origin”标头。因此,Origin 'http://localhost:3000' 不允许访问。响应的 HTTP 状态代码为 503。
这是我的代码:
来自 rosterService 的相关代码:
(function(){
'use strict';
var URL = 'http://nhlwc.cdnak.neulion.com/fs1/nhl/league/teamroster/NJD/iphone/clubroster.json';
angular
.module("DevilsFanApp")
.factory("RosterService", RosterService);
function RosterService($rootScope, $http) {
function fetchPlayers(callback){
return $http({
method: 'GET',
url: URL,
dataType: 'jsonp'
});
}
}
})();
server.js:
var express = require('express');
var app = express();
var ipaddress = process.env.OPENSHIFT_NODEJS_IP || '127.0.0.1';
var port = process.env.OPENSHIFT_NODEJS_PORT || 3000;
app.use(function(req, res, next) {
res.header("Access-Control-Allow-Origin", "http://localhost:3000"); // instead of * give a try with
res.header('Access-Control-Allow-Methods', 'OPTIONS,GET,POST,PUT,DELETE');
res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");
next();
});
app.use(express.static(__dirname + '/public'));
app.listen(port, ipaddress);
config.js:
(function(){
angular
.module("DevilsFanApp")
.config(Configure);
function Configure($routeProvider,$httpProvider) {
$routeProvider
.when("/roster",{
templateUrl: "./views/roster/roster.view.html",
controller: "RosterController"
})
.otherwise({
redirectTo: "/home"
});
}
})();
【问题讨论】:
-
问题出在哪里?
-
res.header('Access-Control-Allow-Methods', 'OPTIONS,GET,POST,PUT,DELETE'); res.header("Access-Control-Allow-Headers", "Content-Type, Authorization, X-Requested-With");如果它们引发 CORS 错误,则启用 CRUD 操作
-
问题是什么,您面临的问题在哪里?
-
get 调用中的 URL 附加到错误的域....并且您在错误的 URL 上设置了标题,即 localhost:3000 ......
-
您已经放置了正确的标头先生...但关键是您没有调用您配置的 URL。
标签: javascript node.js angularjs express http-status-code-503