我在其他关于CORS和django的帖子中找不到我的答案。所以我在这里问我的问题,在一整天弄清楚我做错了什么。
我的前端是VUE.js,这个应用程序正在使用Django和djangoRestFramework对我在DigitalOcean.com应用服务器上的后端进行API调用。
fetch( 'https://someurl.ondigitalocean.app/api/user/token',
{ method: 'POST',
headers: {
'Content-Type': 'application/json',
},
body: JSON.stringify({ email: 'emai@email.com', password: 'password' }),
},
).then(function(response){
if (response.ok){
return response.json()
}
}).then(function(data) {
console.log(data)
}
)这将执行post以接收令牌。此调用仅用于测试目的。API工作正常,对于测试,我使用默认的django浏览器界面,而且我所有的单元测试都是正常的。
我使用django-cors-headers作为中间件,并在我的设置文件中添加了corsheaders到我的'APP‘和’Middleware‘中。
以下是我的设置:
CORS_ALLOWED_ORIGINS = [
"http://maf-internet.nl",
"http://localhost:8080",
"http://127.0.0.1:8000"
]
CSRF_TRUSTED_ORIGINS = [
"http://maf-internet.nl",
]
CORS_ALLOW_ALL_ORIGINS = True
CORS_ALLOW_METHODS = [
'DELETE',
'GET',
'OPTIONS',
'PATCH',
'POST',
'PUT',
]
CORS_ALLOW_HEADERS = [
'accept',
'accept-encoding',
'authorization',
'content-type',
'dnt',
'origin',
'user-agent',
'x-csrftoken',
'x-requested-with',
]以下是我的包:
Django>= 2.2, <2.2.2
djangorestframework>=3.9.0,<3.10.0
psycopg2-binary
dj-database-url
gunicorn
django-cors-headers>=3.7.0
flake8>=3.6.0,<3.7.0Digital Ocean也有CORS来源的条目。我在这里添加了前端域名,结果仍然是一样的。在这里您可以看到我的错误405。

我只是看不出我做错了什么。可能的问题是什么?
发布于 2021-01-28 06:16:04
解决了这个问题,我不得不用https保护客户端域。我不知道,为了进行测试,我认为使用HTTP域就可以了。不对!您需要一个Https域来与DigitalOcena应用程序上的django-rest-framework和django-cors-headers通信。
发布于 2021-01-29 18:41:24
您可以使用此django-cors-headers库来解决您的问题。
发布于 2021-06-28 02:18:03
我试过pip install django-cors-middleware,不用做任何事情就为我工作,只要确保你的中间件中有'corsheaders.middleware.CorsMiddleware‘就行了
https://stackoverflow.com/questions/65922787
复制相似问题