跨域请求被阻止-使用Axios和Django REST

时间:2018-12-02 03:34:57

标签: django-rest-framework axios

我正在尝试在节点服务器上使用本地服务(端口8080)的应用程序中发出GET请求。我正在使用Axios向同时也在本地(端口8000)提供服务的django REST服务器发出请求。

我的请求如下:

axios.get('http://127.0.0.1:8000/recipes/',{headers: {"Access-Control-Allow-Origin": "*"}})

在Django方面,我已将它们包含在中间件中

MIDDLEWARE = [
    'django.middleware.common.CommonMiddleware',
    'corsheaders.middleware.CorsMiddleware',
]

,并且在我已安装的应用中:

INSTALLED_APPS = [
    'corsheaders',
]

并包含此设置:

CORS_ORIGIN_ALLOW_ALL = True

但是我仍然收到CORS错误:

Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at http://127.0.0.1:8000/recipes/. (Reason: missing token ‘access-control-allow-origin’ in CORS header ‘Access-Control-Allow-Headers’ from CORS preflight channel).

知道我缺少什么吗?

2 个答案:

答案 0 :(得分:1)

我知道了。

我需要删除:

{headers: {"Access-Control-Allow-Origin": "*"}

从请求。显然,标头应仅是响应的一部分。

删除后,一切正常。

答案 1 :(得分:0)

您需要创建一个axios实例,将URL的域部分放在baseUrl中,而其余部分在getUrl中就这么简单。

var instance = axios.create({
    baseURL: "http://localhost:8088"
  });

  instance.get(url)
      .then(function(response) { 
    })