javascript - 使用 Django 和 Angular 的 CORS 预检请求

标签 javascript angularjs django cors preflight

我正在尝试向 REST api 发出请求。这是一个 CORS 请求。 我的前端:Angular 1.5 (localhost:3000) 我的后端:Django (*****.ddns.net)

所以我正在使用一项服务(由不想共享代码的人提供:( ),它在实际请求(预检)之前执行 OPTIONS 请求。准确地说,调用是通过UI 路由器状态定义的解析选项。 Django 具有允许 * 的 CORS。

这是我在谷歌浏览器中遇到的错误:

XMLHttpRequest cannot load https://****.net/api/myprofile. The request was redirected to 'https://*****.net/punchclock/api/myprofile/', which is disallowed for cross-origin requests that require preflight.

如果我在 Controller 中执行经典的 $http 请求,它就可以正常工作。

这是收到我的 django 的请求:

+6655:5740d0f9:10|
OPTIONS /punchclock/api//myprofile HTTP/1.0|
Host:*****.net|
Connection:close|
Pragma:no-cache|
Cache-Control:no-cache|
Access-Control-Request-Method:GET|
Origin:http%3a//localhost%3a3000|
User-Agent:Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.102 Safari/537.36|
Access-Control-Request-Headers:accept, authorization|
Accept:*/*|
Referer:http%3a//localhost%3a3000/dashboard|
Accept-Encoding:gzip, deflate, sdch|
Accept-Language:fr-FR,fr;q=0.8,en-US;q=0.6,en;q=0.4,es;q=0.2
-6655:5740d0f9:10

这是我使用 postman 时得到的响应(当我执行 OPTIONS 请求时,它正在与 postman 一起工作)

Access-Control-Allow-Headers →x-requested-with, content-type, accept, origin, authorization, x-csrftoken
Access-Control-Allow-Methods →GET, POST, PUT, PATCH, DELETE, OPTIONS
Access-Control-Allow-Origin →*
Access-Control-Max-Age →86400
Allow →GET, HEAD, OPTIONS
Connection →keep-alive
Content-Type →application/json
Date →Sat, 21 May 2016 21:15:02 GMT
Server →nginx/1.6.2
Transfer-Encoding →chunked
Vary →Accept
X-Frame-Options →SAMEORIGIN

我认为这是 Django 方面的问题,我不知道。如果你有任何想法......(我需要学习很多关于 CORS 的知识......)

最佳答案

确保您定位的 URL 构造正确,并且在您调用的路由末尾有一个尾部斜线。如前所述 here .所以不是这个

'http://localhost:5000/auth'

你可以这样称呼

'http://localhost:5000/auth/'

希望这对您有所帮助。

关于javascript - 使用 Django 和 Angular 的 CORS 预检请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37372458/

相关文章:

javascript - 添加到数组 javascript

javascript - 列表到 Jquery 数据表 c#

javascript - Angular 模块不可用,即使它已定义

django - 自定义 Django 管理 TabularInline 默认字段

主页上的 django allauth 登录和注册表单

JavaScript/Jest : How to show logs from test case only when test fails?

javascript - 检查数组中的字符串是否包含另一个字符串 React Native

angularjs - disabled=false 在 typescript 2.1 中不起作用

css - angularJS 用户如何处理 - 使用 bootstrap css/fonts 但排除 jquery 控件 - 场景

python - 添加保存的 FK 时 NoneType 对象不可调用