我的发布方法是这样的:
public HttpResponseMessage AddUser(User user)
{
UserManager userManager = new UserManager();
try
{
userManager.Create(user);
var savedUser = userManager.FindUserByClientId(user.ClientId);
HttpResponseMessage response = Request.CreateResponse(HttpStatusCode.Created, user);
response.Headers.Location = new Uri(Url.Link("DefaultApi", new { id = savedUser.Id }));
return response;
}
catch(Exception ex)
{
return Request.CreateErrorResponse(HttpStatusCode.BadRequest, ex.Message);
}
}
在角度上,我试图读取该Location标头,但到目前为止,我仍然无法读取。
return $http.post('http://localhost:30028/api/values/adduser', user)
.success(function (data, status, headers, config) {
alert(angular.toJson(data));
alert(angular.toJson(status));
alert(angular.toJson(headers));
alert(angular.toJson(config));
};
我只是检查每个内容,而没有位置标头。有没有一种方法可以访问位置标头,以便我知道新对象的网址?
根据文档,headers
对象实际上是一个返回标头的函数,如下所示:
.success(function(data, status, headers, config) {
alert( headers('Location') );
});
如果要收集所有标头,则可以执行以下操作:
.success(function(data, status, headers, config) {
console.log( headers() );
});
注意: 如果服务器将响应代码设置为301
或302
,则将 无法
获取Location
标头,因为标头将自动透明地跟在XMLHttpRequest对象之后。
因此,请确保您正确设置了响应代码。我在PHP中对此进行了测试(我并没有使用太多),却忘记了设置Location
标头会自动设置响应代码。为了测试这一点,我不得不使用:
header('Location: blah-blah', true, 200);
这是我的工作代码示例,只需将其保存到location-test.php
PHP服务器上并运行即可:
<?php
if(isset($_GET['q'])) {
header('Content-Type: application/json');
header('Location: user/1', true, 200);
echo json_encode(array('query' => $_GET['q']));
} else {
?>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<script type='text/javascript' src='//cdnjs.cloudflare.com/ajax/libs/angular.js/1.1.5/angular.min.js'></script>
<script type='text/javascript'>//<![CDATA[
angular.module('myApp', [])
.controller("myController", function($scope, $http) {
$scope.loc = "Loading...";
$http.get('location.php?q=hello')
.success(function (data, status, header, config) {
console.log(header());
$scope.loc = header('Location');
})
.error(function(data, status) {
console.log((data || 'Req Failed') + ': ' + status);
});
});
//]]></script>
</head>
<body>
<div ng-app="myApp" ng-controller="myController">
Location Header: {{loc}}
</div>
</body>
</html>
<?php
}
问题内容: 我正在使用RestTemplate.postForObject将信息发布到Web服务。除了结果字符串,我还需要响应头中的信息。有什么办法可以做到这一点? 问题答案: 好吧,我终于明白了。交换方法正是我所需要的。它返回包含完整标头的HttpEntity。
问题内容: 我之所以这么问,是因为有几次,我尝试一起使用该命令,并在调用我的项目的脚本/样式/图像时遇到很多错误。我想可能是我做错了什么,但是您应该遵循某种文件夹结构,以免遇到这些错误吗?还是有一种我不太了解的作品的特定方式? 最近,我想我会在一个非常小的应用程序上尝试。它实际上是一个静态网站,但是我想利用Angular的路由来确保所有页面都可以立即加载。所以我的结构是这样的: 所以我知道这个文件
问题内容: 是否可以在AngularJS中读取文件?我想将文件放入HTML5画布进行裁剪。 我在考虑使用指令吗?这是我要放入指令中的javascript代码: 问题答案: 是的,指令是正确的方法,但看起来有些不同: 工作示例:http : //plnkr.co/edit/y5n16v?p=preview 感谢lalalalalmbda提供此链接。
如何在AngularJS中读取此流?我尝试使用以下代码在新窗口中将其作为PDF文件打开: 但我无法看到打开的窗口中的内容。
问题内容: 我有一个动态生成的页面,我想在其中使用静态JavaScript,并向其传递JSON字符串作为参数。我已经看到Google使用了这种方法。 但是,我应该如何从JavaScript中读取JSON字符串? 在此JavaScript中,我想使用HTML文档中的JSON参数。我不知道是否最好使用jQuery。 问题答案: 我将脚本声明更改为: 注释类型和ID字段。之后 在所有浏览器中都可以正常工
我有一个API,访问该API的人必须传递一个授权令牌,所以我的问题是如何从头中获取该认证令牌?