Angular - 如何使用$ http使用HTTPS

时间:2015-08-03 04:48:22

标签: javascript ajax angularjs angular-http

只是想询问如何使用https来处理cross-domain + $http网址?

我使用 $。ajax 来解决我的问题,但之所以我想使用 $ http 更多是因为我有一个 $ http拦截器,因为使用$ .ajax需要更多的代码行,而不是使用拦截器来自动执行某些过程。

我看过类似的帖子[link1link2link3],但他们都没有解决我的问题。

我有我的控制台的附加屏幕截图,我希望它有意义: http-ajax

奇怪的是$ http使用了 OPTION 方法,我将其设置为 POST

这是我的代码快照:

$http({
    method: 'POST',
    url: '/HearingCentre',
    data: {
        Type: ['P', 'V']
    },
    success: function (res) {
        console.log(res);
        d.resolve(res);
    },
    error: function (res) {
        console.log(res);
        d.reject(res);
    }
 });

注意:我在这里使用$ http拦截器,所以基本上URL将附加基本API URL

$ .ajax version

$.ajax({
    method: 'POST',
    crossDomain: true,
    url: 'https://ahtstest.hearing.com.au/services/api/HearingCentre',
    data: {
        Type: ['P', 'V']
    },
    success: function (res) {
        console.log(res);
    },
    error: function (res) {
        console.log(res);
    }
});

有人有解决方案吗?

1 个答案:

答案 0 :(得分:1)

var userApp = angular.module('userApp', []);
    userApp.controller('UserController', function ($scope,$http) {

        //server call with angular 
        $scope.makeServerCall = function() {
                var url = '/root/jsp/catalog/xml/getJsp.jsp?PatientId=9175;
                $http({
                    crossDomain: true,
                    xhrFields: {withCredentials: false},
                    headers: {'Accept': 'application/json','Content-Type': 'application/json'},
                    method: 'GET',
                    url: url
                }).then(function(response) {
                    console.log("Success: "+JSON.stringify(response));
                },function(response) {
                    console.log("Error:   "+JSON.stringify(response));
                });
        };
  }

并确保在服务器端可以访问跨域reuqest。假设我使用的是Spring MVC,所以我添加了一个过滤器并配置跨域请求以允许如下。如果你使用任何其他语言让我们说PHP,那么你必须设置响应头。你可以搜索相同的。

我的服务器过滤器Spring mvc

@Component
public class EcwCORSFilter implements Filter {

        public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException {
                HttpServletResponse response = (HttpServletResponse) res;
                response.setHeader("Access-Control-Allow-Origin", "*");
                response.setHeader("Access-Control-Allow-Methods", "POST, GET, OPTIONS, DELETE");
                response.setHeader("Access-Control-Max-Age", "3600");
                response.setHeader("Access-Control-Allow-Headers", "Content-Type, Authorization, X-Requested-With,isAjaxRequest");
                chain.doFilter(req, res);
        }

        public void init(FilterConfig filterConfig) {
        }

        public void destroy() {
        }

}