我对跨域域请求有一个简单的任务。所以我创建了一个示例快速应用程序,它有一个到' / redirect'的路由,这将重定向到" http://www.google.com& #34 ;.在前端,我创建了一个具有onclick事件的按钮,这将请求' / redirect'
我在服务器端的代码:
app.get('/redirect',function(req,res){
res.redirect("http://www.google.com");
})

在前端:
<html>
<head>
<link rel="stylesheet" type="text/css" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css"/>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.5.6/angular.min.js"></script>
<script type="text/javascript">
var app = angular.module('myApp',[]);
app.controller('crtl',function ($scope,$http,$timeout){
$scope.fun1 = function(){
$http({
method: 'GET',
url: '/redirect'
}).then(function successCallback(response) {
// console.log(response.data)
console.log("got the request for redirect");
}, function errorCallback(response) {});
}
});
</script>
</head>
<body ng-app="myApp" ng-controller="crtl">
<center><br/>
<button ng-click="fun1()" class="btn">Click Me</button>
</center>
</body>
</html>
&#13;
答案 0 :(得分:0)
您无法使用服务器启用对其他域的直接跨域访问。浏览器根本就不会那样工作。浏览器要求您尝试访问的域(在您的示例中为www.google.com)是支持跨域访问的域。
Timestamp myID specialID
0 2016-01-01 00:00:00 001 NaN
1 2016-01-01 01:00:00 001 NaN
2 2016-01-01 02:00:00 001 NaN
3 2016-01-01 00:00:00 002 NaN
4 2016-01-01 01:00:00 002 foo_0
5 2016-01-01 02:00:00 002 NaN
6 2016-01-01 00:00:00 003 NaN
7 2016-01-01 01:00:00 003 NaN
8 2016-01-01 02:00:00 003 foo_1
9 2016-01-02 00:00:00 004 NaN
10 2016-01-02 01:00:00 004 foo_2
11 2016-01-02 02:00:00 004 NaN
只是告诉浏览器从其他来源获取内容。如果浏览器没有获取该内容的交叉原始权限,则res.redirect()
不会比尝试直接访问它的浏览器更好地工作。
您可以将交叉原始内容嵌入到自己的iframe中,并且可以在那里显示内容,但是您不会被允许从您自己的Javascript访问内容(出于相同的交叉原因)。
您可以代理服务器中的内容,这意味着您可以要求您的服务器为您获取内容,您的服务器将获取它并将其返回到浏览器(通过您的域)。这适用于某些用途,但这取决于您尝试对内容做什么(您不会在您的问题中分享)这是否能满足您的需求。