我有一个GET方法hello world服务,很简单地将“Hello world”返回给访问它的任何人 如果我通过REST API工具访问此方法,一切正常,并返回响应 更奇怪的是,通过检查日志,我知道请求提交得很好,但是我无法从响应中返回提取体。
<html>
<head>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.4.8/angular.min.js"></script>
<link rel="stylesheet" href="css/Mainstyle.css" type="text/css" media="screen"/>
</head>
<div ng-app="betaApp" ng-controller="betaController">
<p>The url of this page is:</p>
<h3>{{"Server says: " + mywelcome}}</h3>
<p>{{temp}}</p>
<title>Beta</title>
<div id="betaform" class="display">
<p>{{5+5}}</p>
</div>
</div>
<script>
var app = angular.module('betaApp', []);
app.controller('betaController', function($scope, $http, $location) {
$scope.temp = $location.absUrl();
$http({
url: "http://localhost:8080/API/HelloWorld",
method: "GET",
params: {}
}).then(function (response) {
$scope.mywelcome = response.data;
$scope.testobj = response.status;
});
});
</script>
此代码的结果将正确显示变量temp,但不是myWelcome或testobj 我相信这意味着问题在于这段代码:
.then(function (response) {
$scope.mywelcome = response.data;
$scope.testobj = response.status;
})
但是由于我对angular.js的不熟悉,我不确定到底出了什么问题或原因。
我的电话与文档匹配,但它不起作用,这是最奇特的。
更新:我找到了一个非常基本的解决方案,但我不会将其作为答案,因为我不喜欢它并且觉得有更好的方法。
问题是由于CORS相关原因导致响应被阻止
通过在每种方法中改变服务器端的响应来“解决”这个问题。
Response.status(200).entity("Hello World.").header("Access-Control-Allow-Origin", "*").build();
然而,你们中的精明人员会发现这意味着需要为每个方法添加标题,这看起来很艰巨。我将研究有更好的方法的可能性。
更新2:找到了更好,更简单的解决方案,但由于这已被标记为重复,除了链接到我感觉right solution.之外,我做不了什么
更新的标签,因为这是一个技术上与服务器问题有关的问题。