AngularJS CORS 问题

2024-03-02

我已经搜索了 200 多个网站(也许有点夸张,但也不是很多)来了解如何使用 angularjs 处理 cors。我们有一台运行 Web API 服务器的本地计算机。我们正在开发一个调用 API 获取数据的客户端。当从服务器运行客户端时,我们接收数据没有问题。当我们从不同的域运行它时,在尝试获取数据时会得到红色 200 响应,而得到空白响应。这是一些代码:

var myApp = angular.module('Project', ['ngResource']);

myApp.config(function($routeProvider){
    $routeProvider.
        when('/new', {templateUrl:'templates/new.html', controller:'EditProjectController'}).
        when('/mobile', {templateUrl:'templates/mobile.html', controller:'ProjectController'}).
        when('/it', {templateUrl:'templates/it.html', controller:'ProjectController'}).
        when('/writing', {templateUrl:'templates/writing.html', controller:'ProjectController'}).
        when('/all', { templateUrl: 'templates/all.html' }).
        when('/login', { templateUrl: 'partials/_login.html' }).
        otherwise({ redirectTo: '/all' });
});
myApp.config(['$httpProvider', function ($httpProvider) {
$httpProvider.defaults.useXDomain = true;
delete $httpProvider.defaults.headers.common['X-Requested-With'];
}
]);



myApp.controller('ProjectController', 
function myApp($scope, $http, projectDataService, userLoginService) {
    $http.defaults.useXDomain = true;
    $scope.loadProject = function(){
        projectDataService.getProject(function(project){
            $scope.project = project;
            })


    };
    $scope.loadProject();
}

);

myApp.factory('projectDataService', function ($resource, $q) {
var resource = $resource('http://webapiserver/api/:id', { id: '@id' });
return {
    getProject: function () {
        var deferred = $q.defer();
        resource.query({ id: 'project' },
            function (project) {
                deferred.resolve(project);
            },
            function (response) {
                deferred.reject(response);
            });

        return deferred.promise;
    },
    save: function (project) {
        var deferred = $q.defer();
        project.id = 'project/9';
        resource.save(project,
            function (response) { deferred.resolve(response); },
            function (response) { deferred.reject(response); }
            );
        return deferred.promise;
    }
};
});

我也尝试过使用 $http 但我得到相同的响应(或缺乏响应):

myApp.factory("projectDataService", function ($http) {

return {
    getProject: function (successcb) {
        $http.get("http://webapiserver/api/project").
        success(function (data, status, headers, config) {
            successcb(data);
        }).
        error(function (data, status, headers, config) {

    }
};
});

当我浏览到在浏览器中提供 json 的 url 时,它会吐出数据。在服务器上,我们允许跨域来源,这从我之前的声明中可以看出。正如您所看到的,我正在 myApp.config 中实现标头覆盖,我什至尝试将其直接放入我的控制器中...没有区别...

这项任务现在已经 3 天了。

对此的帮助非常感谢。提前致谢。


您可能需要稍微更改一下 Web API。我遇到了同样的问题并写了一篇关于如何解决这个问题的文章。

我使用 Sinatra 作为 API,我不知道你的网络服务使用什么语言,但我想你可以应用它。基本上,您需要通过定义允许哪些来源和哪些 HTTP 方法来配置服务器以接受 CORS 调用。

您说您已经在服务器上启用了它,但是您到底做了什么?

请参阅这篇文章了解更多详细信息:带有 angular.js 的 CORS https://devblast.com/b/cors-with-angular-js-and-sinatra

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

AngularJS CORS 问题 的相关文章

随机推荐

  • 无法加载资源:服务器响应 404(未找到)css 状态

    我无法让浏览器显示我正在创建的应用程序的 css 我查看了其他用户提出的相同问题 但没有找到任何对我的情况有帮助的答案 当我进入该页面时 显示的只是 Hello world 没有样式 即使样式表已链接 当我检查页面时 出现错误 无法加载资源
  • MVC 中 SelectlistItem 的自定义属性

    我想为 dropdownlist 创建一个自定义 htmlhelper 扩展方法 以接受 selectlistitem 的 Option 标签中的自定义属性 我的模型类中有一个属性 我想将其作为属性包含在选择列表的选项标记中 i e
  • MVC Mini Profiler 不尊重应用程序的路径

    我已经按照其描述设置了 MVC Mini Profiler项目页面 http code google com p mvc mini profiler 并且包含内容确实被写在页面上 问题是 我的应用程序位于http localhost 808
  • 在 AWS Ubuntu 14.04.1 LTS 上安装 Sublime Text 3

    Sublime text 是适用于 Windows 和 Linux 的快速编辑器 http www sublimetext com 我无法使用以下命令在 AWS Ubuntu 14 04 1 LTS 上安装 sublime text 3 s
  • 测量 wifi 到 Iphone/Ipad 的信号强度

    我想从 iOS 设备获取当前的 Wifi 信号强度 Google 搜索仅显示适用于 Android 设备的解决方案 从文献中我了解到 Apple 不允许访问硬件 因此没有人可以通过他们的应用程序以 dbm 形式检索设备的信号强度 它是否正确
  • Spring Batch- ItemWriter - DataIntegrityViolationException - 跳过记录 - 重试 - 不起作用

    我从某个时候就被这个问题困扰了 我正在使用 spring batch 3 0 7 问题是如果org springframework dao DataIntegrityViolationException在 ItemWriter 中的一条记录
  • Python/ Pandas:找到左右最大值

    我有一个 pandas 数据框 第一列中有一个区域 其余部分有 8 年的季度数据 大约有 4400 行 这是一个示例 idx Q12000 Q22000 Q32000 Q42000 Q12001 Q22001 Q32001 Q42001 Q
  • Android LocationServices.checkLocationSettings 误报结果

    目前受影响的设备 Xperia 1 II 小米红米Note 7 Use 为了请求位置更新 我检查位置设置 事先就足够了 如果没有 我会显示一条小文字 表明服务必须 为我的功能启用 如果用户单击它 系统对话框将启用 会提示定位服务 我如何运行
  • 在一列中添加多个值

    我必须按如下所示的方式创建一个表 我们可以这样创作吗 如果是 表名 示例 product id product name category 1 Sample1 1 2 3 2 sample2 4 5 6 其中类别字段包含多个值 我们如何搜索
  • 使用 vector 作为缓冲区,而不在 resize() 上对其进行初始化

    我想用vector
  • Powershell:确定进程是 32 位还是 64 位

    有没有办法确定给定的进程 ID 是 32 位进程还是 64 位进程 我正在使用 Powershell v3 0 尝试这个 Add Type MemberDefinition DllImport kernel32 dll SetLastErr
  • 改造响应保留旧数据并将新数据添加到 editText 搜索的数据中

    我正在使用 editText 搜索从 API 获取数据 第一次搜索时 它按预期工作 但在第二次搜索时 它不会显示唯一的新响应 而是保留旧响应并在其末尾添加新响应 它的行为就像缓存以前的一样 我该如何修复该问题以仅显示最后一个搜索词结果 分段
  • Google 云端硬盘文件列表:500 错误

    对于我们的应用程序 我们使用具有 2 足授权的 Google Drive SDK 我们使用 Drive SDK 很长时间了 但今天我们遇到了 Files list API 的新问题 https developers google com d
  • 用于一对多查找的 Cassandra 数据建模

    考虑存储用户及其联系人的问题 大约有一亿用户 每个用户有几百个联系人 平均联系人大小为 1kb 可能有些用户拥有太多联系人 gt 5000 并且可能有一些联系人比平均 1kb 大得多 例如 10 倍 用户会主动添加联系人 但很少会删除联系人
  • 使用 Ansible 配置 Jenkins 2.0

    我使用 Ansible 来配置我们的服务器 我安装了 Jenkins 2 0 但当我打开 Web UI 时 它变成了启动配置 我如何使用 Ansible 或 shell 或 jenkins cli 来做到这一点 CentOS 7 Ansib
  • 登录时从用户集合中获取用户数据

    我目前正在开发一个在客户端初始化了 firebase 的应用程序 当用户通过 firebase 登录时 我想从 firestore 获取用户的数据 我目前正在这样做onAuthStateChanged侦听器并成功获取用户 我想知道这是否是获
  • 套接字连接超时:规范在哪里?

    我的工作环境是我的局域网 下面的代码示例是用 Java 语言编写的 但我的问题是关于 TCP 而不是编程 我遇到过以下连接超时的情况 2 ms when connection established 当主机处于活动状态但未侦听指定套接字端口
  • emacs lisp 中的 let 和 flet

    我不知道你是否会称其为规范公式 但为了绑定本地函数 GNU 手册建议我使用 flet defun adder with flet x flet f x x 3 f x 然而 我偶然尝试了 在玩了一会儿Scheme之后 下面的表达式 其中我使
  • 将给定字符串转换为具有给定子字符串的回文

    给定字符串 S1 和字符串 S2 将字符串 S1 转换为回文字符串 例如 S2 是该回文字符串的子字符串 S1 上允许的唯一操作是将任何字符替换为任何其他字符 找出所需的最少操作次数 我已经编写了这段代码 可以计算需要使用常规字符串进行多少
  • AngularJS CORS 问题

    我已经搜索了 200 多个网站 也许有点夸张 但也不是很多 来了解如何使用 angularjs 处理 cors 我们有一台运行 Web API 服务器的本地计算机 我们正在开发一个调用 API 获取数据的客户端 当从服务器运行客户端时 我们