【问题标题】:Django ASGI New Relic getting a CORS Error HerokuDjango ASGI New Relic 得到一个 CORS 错误 Heroku
【发布时间】: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


    【解决方案1】:

    像这样改变你的 asgi.py 文件

    from django.core.asgi import get_asgi_application
    import newrelic.agent #import newrelic agent
    
    os.environ.setdefault("DJANGO_SETTINGS_MODULE", "server.settings")
    django_asgi_app = get_asgi_application()
    from django.conf import settings
    newrelic_config_file = settings.BASE_DIR + "/newrelic.ini" #location of your newrelic.ini file
    newrelic.agent.initialize(newrelic_config_file) #initialise agent
    application = newrelic.agent.ASGIApplicationWrapper(django_asgi_app) 
    

    【讨论】:

      猜你喜欢
      • 2014-10-03
      • 2016-05-02
      • 1970-01-01
      • 2012-11-08
      • 2020-08-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-03-25
      相关资源
      最近更新 更多