Django Request header field x-token is not allowed报错

510 阅读1分钟

最近在做项目时,前端报错

Access to XMLHttpRequest at 'http://xxx.xxx.xx.xx/user/1ogin' from origin 'http://192.168.43.186:9528'
has been blocked by CORS policy: Request header field x-token is not allowed by Access-Control-Allow-Headers in preflight

明明做了允许跨域的设置,居然还报跨域认证的错误。根据报错的字面意思,当时也想了下是前端headers的问题,前端说他没改代码。发给我看的代码是
这是很正常的headers。在网上查资料也是说headers中有没被允许的字段,于是让抓包看headers,然后就发现了问题所在,X-Token这个字段不在drango的默认允许headers列表中。 在setting.py文件中,将X-Token字段(大小写不敏感)加入允许列表即可。类似报错,在设置好允许跨域的情况下,同理解决。

# 接受请求头
CORS_ALLOW_HEADERS = (
    'accept',
    'accept-encoding',
    'authorization',
    'content-type',
    'dnt',
    'origin',
    'user-agent',
    'x-csrftoken',
    'x-requested-with',
    'X-Token',
)