Angular http post 仅在 Chrome 中在服务器上返回 403 错误

Posted

技术标签:

【中文标题】Angular http post 仅在 Chrome 中在服务器上返回 403 错误【英文标题】:Angular http post returning a 403 error on server only in Chrome 【发布时间】:2017-03-08 00:51:43 【问题描述】:

我在 Angular 控制器中有一个简单的 HTTP post 调用,当我在本地主机上运行它时运行良好,但在将它部署到阶段服务器时出现 403 错误。更具体地说,它只在 Chrome 上出现 403 错误,在 IE 和 FireFox 上运行良好。

这里是JS文件:

var app = angular.module('app', ['ngAnimate', 'ui.bootstrap'], function($locationProvider) 
$locationProvider.html5Mode(
    enabled: true,
    requireBase: false
);
);

app.controller('ClearFilesController', ['$rootScope', '$timeout', '$scope', '$http', '$uibModal', '$filter','$window','$location',function($rootScope, $timeout, $scope, $http, $uibModal, $filter,$window,$location) 

$scope.message = "Clear Test Files";
$scope.statusMessage = "Click the button to delete test files in the 'Automation Testing' Collection";

$scope.deleteFiles = function()
    $scope.statusMessage = "Clearing files...";
    $http.post('/clearFiles')
        .then(function(response)
            var status = response.status;
            if('200'!=status) 
                $scope.statusMessage = "Clearing of files failed.";
             else 
                $scope.statusMessage = "Successfully cleared files.";
            
        );

;

]);

这是来自 Chrome 上的开发工具的错误:angular.js:11630 POST https://sample-stageserver.com/clearFiles/403 (Forbidden)

我只在 Chrome 中收到此错误的可能原因是什么?

【问题讨论】:

检查 F12 工具中的网络选项卡,看看有什么不同(标题等...) 我试过了,除了状态码之外并没有真正看到任何差异。除此之外真的没有太大的不同 试试telerik.com/fiddler 我发现的唯一区别是 Chrome 在标头中有一个来源和一个主机...主机:sample-stageserver.com 来源:sample-stageserver.com 但 FireFox 和 IE 只有主机。会不会是这个原因? 如果这是唯一的区别,那么我会说它一定是造成它的原因。 wiki.mozilla.org/Security/Originen.wikipedia.org/wiki/HTTP_403 【参考方案1】:

我可以添加评论 - 所以你可以尝试邮递员来测试你的问题。 并尝试使用基本的 $http 作为示例 - Angular $http doc(不是简写)。

【讨论】:

以上是关于Angular http post 仅在 Chrome 中在服务器上返回 403 错误的主要内容,如果未能解决你的问题,请参考以下文章

如何在Angular.js $http.post中指定dataType:'json'?

angular2 http.post 方法抛出 typeerror 异常

Angular2 http.post 和未定义的 req.body

Angular $http 正在发送 OPTIONS 而不是 PUT(不是 POST)

Angular.js $http.post TypeError:无法读取未定义的属性“数据”

Angular 2:从订阅 http.post 获得响应后如何调用函数