我试图向远程服务器发送HTTP GET请求,并在HTML页面上使用响应。下面是project/js/script.js页面
var app = angular.module('app', ['ngResource']);
var config = {
url:"www.myWebsite.com/discover",
headers: {
"X-Object-Header" : "123456789 ",
"Content-Type": "application/json"
}
};
app.controller('discoverObjectCtrl', ['$scope', '$http', function (scope, http) {
console.log('Everything Works!');
http.get("/object", config).success(function (data) {
scope.object = data;
});
console.log(scope.object);
}]);
在我的响应标题中,这是我得到的
远程地址:127.0.0.1:63342
请求URL:localhost:63342/object
请求方法:获取
状态代码:404未找到
请求头
接受:申请/json,文本/平原,/
接受编码:gzip、deflate、sdch
接受语言:en-US,en;q=0.8
缓存控制:最大年龄=0
连接:保持活力
主机:本地主机:63342
Referer:localhost:63342/DemoSP/index.html
User-Agent: Mozilla/5.0(Windows NT 6.3; WOW64)AppleWebKit/537.36(KHTML, like Gecko)Chrome/36.0.1985.125Safari /537.36
X-Object-Header:123456789
我想做的是发送带有自定义URL的超文本传输协议请求。例如,我希望我的控制台头显示
请求URL:www.myWebsite.com/discover/object
而不是
请求URL:localhost:63342/project/www.myWebsite.com/discover/object
拜托,我需要帮助。谢啦
HttpIntercepter可用于添加公共头和公共参数。
在配置中添加以下内容:
$httpProvider.interceptors.push('UtimfHttpIntercepter')
并使用名称创建工厂
UtimfHttpIntercepter
angular.module('utimf.services', ['ngResource', 'ng.deviceDetector'])
.factory('UtimfHttpIntercepter', UtimfHttpIntercepter)
UtimfHttpIntercepter.$inject = ['$q', '$cookieStore', '$location', '$timeout', '$rootScope', 'appConfig', 'Encrypt', 'appText', 'myDevice'];
function UtimfHttpIntercepter($q, $cookieStore, $location, $timeout, $rootScope, appConfig, Encrypt, appText, myDevice) {
var authFactory = {};
var _request = function (config) {
config.headers = config.headers || {}; // change/add hearders
config.data = config.data || {}; // change/add post data
config.params = config.params || {}; //change/add querystring params
return config || $q.when(config);
}
var _requestError = function (rejection) {
// handle if there is a request error
return $q.reject(rejection);
}
var _response = function(response){
// handle your response
return response || $q.when(response);
}
var _responseError = function (rejection) {
// handle if there is a request error
return $q.reject(rejection);
}
authFactory.request = _request;
authFactory.requestError = _requestError;
authFactory.response = _response;
authFactory.responseError = _responseError;
return authFactory;
}
您实际做的是跨域Ajax调用。有一些典型的解决方案,你可以选择:
>
JSONP,对AngularJs使用$http.jsonp
服务端代理,避免访问不同的域
使用“访问控制允许来源”标题
以下是一些可以帮助您的链接:
AngulaJS jsonp
带角度JS的跨源$http
您应该如下配置get
:
$http.get("www.myWebsite.com/discover/object", {
headers: {
"X-Object-Header" : "123456789",
"Content-Type": "application/json"
}
}).success(...);
但是您将遇到CORS问题,因为请求的域与当前脚本所在的域不同。您需要在服务器环境中通过Access Control Allow Origin头启用www.myWebsite.com
查询,或者如果您可以更改www.myWebsite.com/discover/object
endpoint,则将其设为JSONPendpoint,您可以通过$http.JSONP
进行查询。
请参见此答案。
我正试图使用Guzzle6 http客户端发送一个post请求。我发送了两个请求,一个内容类型为(Guzzle),另一个为(Guzzle)。 我将客户机初始化如下(分别为和): 我收到的响应没有相同的数据/正文: :的输出 但是为什么我首先问这个问题是因为我面临签名不匹配的问题。 当我发送请求时,我添加了一个带有签名的头,签名是。因此,当以和的形式发送数据时,我得到了不同的签名(因为在的情况下,接
问题内容: 我一直在尝试从SO和其他站点上的大量示例中学习,但是我无法弄清楚为什么我一起学习的示例无法正常工作。我正在构建一个小型的概念验证应用程序,该应用程序可以识别语音并将其(文本)作为POST请求发送到node.js服务器。我确认了语音识别功能,并且服务器正在通过常规浏览器访问获得连接,因此我被认为是问题出在应用程序本身。我想念一些小而愚蠢的东西吗?没有引发任何错误,但是服务器从不识别连接。
问题内容: 我需要使用该服务发送GET请求。参数之一是ID数组。网址看起来像这样一个 **mysite.com/items?id[]=1 &id[]=2&id[]=3&id[]=4** 我尝试过这种方法 但网址是 **mysite.com/items?id=%5B%221%22%2C%222%22%2C%223%22%2C%224%22%5D** 那是因为Angular正在将我的值转换为JSON字
很多时候我们需要在页面打开的时候,读取远程的内容,然后在当前页面显示. 这就需要用到 http请求了. vue页面调用http请求 vuejs 内置了对发送http请求的支持. 只需要在对应页面的script 标签内加上对应的代码就好. 例如: 我们新增一个页面,叫 "博客列表页" : src/components/BlogList.vue, 内容如下: <template> <div >
问题内容: Express.JS提供了一些静态页面。设置很简单: 我希望响应包含一个附加的http标头( Access-Control-Allow-Origin:* )。应该放在哪里?我尝试了以下示例,但是标题仅出现在默认页面上: 谢谢。 问题答案: 我尝试了以下示例,但标题仅出现在默认页面上 是的,这是因为您仅为路由而不是其他路径定义了它。您应该改为使用中间件。 如果您希望为所有请求设置标题:
问题内容: 我正在开发使用不同服务其余部分的图形界面(用Java编写)。我必须调用这样的服务: 呼叫服务: 当我从Angularjs服务文件中请求时,如果服务具有Content-Type = multipart / form- data,则会收到错误400(错误请求) 如果服务的Content-Type =“ application / x-www-form-urlencoded; charset