无法在 Django 网站中发布跨源请求

Posted

技术标签:

【中文标题】无法在 Django 网站中发布跨源请求【英文标题】:Unable to post a cross origin request in Django website 【发布时间】:2017-03-07 20:40:12 【问题描述】:

即使在安装 CORS 中间件并启用跨域请求之后。我无法使用 javascript 发出发布请求。

const csrf = Cookies.get('csrftoken');
    return 
    'X-CSRFToken' : csrf,
    'Access-Control-Allow-Origin':"*"
    "Access-Control-Allow-Headers":"Access-Control-Allow-Headers, Origin,Accept, X-Requested-With, Content-Type, Access-Control-Request-Method, Access-Control-Request-Headers";

在 Django 应用中也是如此

CORS_ORIGIN_ALLOW_ALL = True
CORS_ORIGIN_WHITELIST = (
'127.0.0.1',
)

CORS_ALLOW_HEADERS = (
'x-requested-with',
'content-type',
'accept',
'origin',
'authorization',
'x-csrftoken',
'x-api-key'
)

而且在添加 CORS 中间件之后,

MIDDLEWARE_CLASSES = ('corsheaders.middleware.CorsMiddleware')

【问题讨论】:

【参考方案1】:

也许您需要设置 Access-Control-Request-Methods。 像这样的

"Access-Control-Request-Methods": "OPTIONS, HEAD, GET, POST"

检查这个问题Default value for Access-Control-Request-Methods

【讨论】:

我在发帖请求时遇到这种情况...Request header field access-control-allow-origin is not allowed by Access-Control-Allow-Headers in preflight response.

以上是关于无法在 Django 网站中发布跨源请求的主要内容,如果未能解决你的问题,请参考以下文章

在 Django 中启用 CORS(跨源请求)

Django rest 框架和跨源请求

我的请求是跨源请求吗?(heroku 上的 Django rest api,CORS 没有阻止我的请求)

无法提交:// 请求,跨源请求仅支持 http://

阻止跨源请求

允许对 http 和 https 的跨源请求