1

我正在使用 AngularJS 和基于 Django-Tastypie 的 REST API 开发一个 webapp 来获取数据。

为了能够执行 ajax 请求,我使用 django-cors-header 框架(https://github.com/ottoyiu/django-cors-headers)在 django 上启用了跨源资源共享,但我在 chrome 检查器中注意到预检在主请求被取消之前发送的请求(一个 OPTIONS 请求)几乎立即被取消,我在 Django 服务器日志中看到:"OPTIONS /api/airport/19643 HTTP/1.1" 301

我发现一些关于此的帖子建议'X-Requested-With'从标头中删除参数($http.get 不允许 Access-Control-Allow-Origin 但 $.ajax 是)但这仅解决了 GET 请求的问题。因此,如果我尝试发送 PUT 或 POST 请求,则会发送预检请求并被取消!

这是我在启用 CORS 但不从标题中删除前一个参数时在检查器上看到的内容: 在此处输入图像描述

对于 PUT 请求,我也收到相同的错误。

我真的看不出问题出在哪里,所以我希望有人能指出我正确的方向。

非常感谢

4

2 回答 2

0

我建议,你可以试试下面的 chrome 命令行选项,以便在本地测试中允许 CORS:

Chrome.exe --allow-file-access-from-files

注意:您的 chrome 不得打开。当您运行此命令时,chrome 将自动打开。

如果您在命令提示符下输入此命令,请选择您的 chrome 安装目录,然后使用此命令。

于 2013-08-07T12:58:33.177 回答
0

那么问题是/在 URL 中丢失。/api/airport/19643因此,我应该使用/api/airport/19643/(奇怪...) ,而不是向 : 发送 ajax 请求

(有关 CORS 的更多详细信息,我建议您查看https://developers.google.com/storage/docs/cross-origin

于 2013-08-07T14:42:11.897 回答