我的情况与此question有点相似,但是有些不同,也没有答案。
我的后端是python,前端是Angular。实时服务器是Ngnix / Unix,而开发服务器是Windows。每个请求仅发送OPTIONS请求,成功响应为200,但不遵循GET / POST。它工作得非常好,只有在生产服务器上才不能正常工作。控制台中没有CORS错误,后端是debug = True,用于检查,但到目前为止没有问题,因为显然没有进行获取/发布。
在开发机器上,一切正常。先前的团队添加了自定义标题“语言”:
const clonedRequest = req.clone({ headers: req.headers.set('Language', lang) });
我注意到,在连接到实时主机时永远不会发送。在开发设置中,我看到以下标题:
Accept application/json
Accept-Encoding gzip, deflate
Accept-Language en-US,en;q=0.5
Connection keep-alive
Content-Length 21
Content-Type application/json
Host 127.0.0.1:9000
Language en
Origin http://localhost:4800
Referer http://localhost:4800/start/forgot-pwd
从前端(开发或生产环境)连接到生产环境时,未发送语言标头,但我怀疑它有问题。无论如何,我在后端的CORS看起来像这样:
CORS_ALLOW_HEADERS = (
'accept',
'accept-encoding',
'authorization',
'content-type',
'dnt',
'origin',
'user-agent',
'language',
'x-requested-with',
)
答案 0 :(得分:0)
您需要将特定来源列入白名单。 使用corsheaders,例如:
df
Name1 Name2 ID1 ID2
0 John Jack 0 1
1 John Albert 0 2
2 Jack Eva 1 3
3 Albert Sara 2 5
4 Eva Sara 3 5
您还需要在CORS_ORIGIN_WHITELIST = [
'localhost:4800',
'127.0.0.1:4800'
]
之后添加中间件
SecurityMiddleware
您还需要向您的'corsheaders.middleware.CorsMiddleware',
中添加'corsheaders',
。
此外,您可以简单地设置INSTALLED_APPS
,除了上面列出的内容之外,还可以使用CORS。