【发布时间】:2018-07-20 07:30:27
【问题描述】:
我正在使用 Django 通道和 daphne 服务器 (ASGI) 而不是典型的 gunicorn (WSGI) 服务器运行 Django 应用程序。所以我不得不将我的应用程序修改为:
# asgi.py
import os
import django
from channels.routing import get_default_application
from asgiref.wsgi import WsgiToAsgi
from django.core.wsgi import get_wsgi_application
from newrelic import agent
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "server.settings")
django.setup()
application = agent.WSGIApplicationWrapper(get_wsgi_application())
application = WsgiToAsgi(application)
令我惊讶的是,这确实有效。当我从浏览器或邮递员访问我的 django api 时,它可以正常工作,并且数据显示在 New Relic 中。但是,我还有一个客户端 Angular Web 应用程序,它对 django 服务器进行 REST API 调用,但我收到了 CORS 错误。
请注意,这不是一个常规的 CORS 问题,因为当我删除新的 relic 包装器时,我能够从 Angular 正确访问我的 API。
无法加载https://my-app.herokuapp.com/api/:对预检请求的响应未通过访问控制检查:请求的资源上不存在“Access-Control-Allow-Origin”标头。 Origin https://frontend.com 因此不允许访问。
【问题讨论】:
标签: django heroku cors newrelic