繁体   English   中英

使用AngularJS发送HTTP标头请求

[英]Send HTTP Header Requests with AngularJS

我正在尝试将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

请求网址 :localhost:63342 / object

请求方法 :GET

状态码 :404找不到


请求标题


接受 :application / json,text / plain, /

接受编码 :gzip,deflate,sdch

接受语言 :en-US,en; q = 0.8

缓存控制 :max-age = 0

连接方式 :保持活动

主机 :localhost:63342

的Referer:本地主机:63342 / DemoSP / index.html的

用户代理 :Mozilla / 5.0(Windows NT 6.3; WOW64)AppleWebKit / 537.36(KHTML,like Gecko)Chrome / 36.0.1985.125 Safari / 537.36

X-Object-Header :123456789

我想做的是发送带有自定义URL的http请求。 例如,我希望控制台标题显示

要求网址 :www.myWebsite.com/discover/object

并不是

要求网址 :localhost:63342 / project / www.myWebsite.com / discover / object

请对此我需要帮助。 谢谢

您应该这样配置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端点,然后将其www.myWebsite.com/discover/object JSONP端点您可以通过$http.jsonp查询。

另请参阅此答案

您实际上正在做的是跨域Ajax调用。 您可以选择一些典型的解决方案:

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;
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM