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 代码
Tomcat CORS:预检成功,但实际请求失败,403 被禁止