angularJS ajax 调用失败 403 但 jQuery ajax 调用适用于跨站点 templateUrl 加载。 [复制]

Posted

技术标签:

【中文标题】angularJS ajax 调用失败 403 但 jQuery ajax 调用适用于跨站点 templateUrl 加载。 [复制]【英文标题】:angularJS ajax call fails 403 but jQuery ajax call works for cross-site templateUrl loading. [duplicate] 【发布时间】:2013-05-04 13:11:42 【问题描述】:

为了测试 AngularJS,我从http://angularjs.org/ 主页上的“连接后端”示例中获取了以下代码。当视图在本地时,一切都按预期工作,但是当我将视图移动到另一个 URL 时,我得到 403。请参阅此处的 jsbin 示例:

http://jsbin.com/olavok/1/edit

选项 ... 403(禁止) angular.min.js:99 XMLHttpRequest 无法加载 .... Access-Control-Allow-Origin 不允许来源 http://jsbin.com。

然而,jQuery 工作得很好。在同一个 jsbin 中,我添加了一个 jQuery ajax 调用,我们在日志中看到了 JQUERY SUCCESS。如果您查看结果,您会看到 jQuery 交付了视图。

关于如何让 Angular 发挥出色的跨站点功能有什么想法吗?我读到 Angular 正在为 DOM 使用“jQuery light”。有没有办法让 Angular 回退并使用 jQuery 进行 ajax?

【问题讨论】:

【参考方案1】:

这似乎是设计使然:http://docs.angularjs.org/api/ng.$http

阅读Cross Site Request Forgery (XSRF) Protection上的部分。

我刚刚注意到 403 来自 OPTIONS 动词,而不是 GET。 jQuery 之所以有效,是因为它只执行 GET,但 Angular 的 $http 似乎遵守规则:

AngularJS performs an OPTIONS HTTP request for a cross-origin resource

【讨论】:

嗨,Langdon,知道配置 Angular 以使用 GET 而不是 OPTIONS 的方法吗?

以上是关于angularJS ajax 调用失败 403 但 jQuery ajax 调用适用于跨站点 templateUrl 加载。 [复制]的主要内容,如果未能解决你的问题,请参考以下文章

间歇性 HTTP 403 禁止错误调用相同的 Ajax 代码

错误 403 禁止通过 ajax 请求服务器

ajax请求拥有域的403

Tomcat CORS:预检成功,但实际请求失败,403 被禁止

Django + ajax(jquery):http错误代码403(禁止)[关闭]

为啥单个 Ajax 调用工作正常,但连续 Ajax 调用失败?