【问题标题】:Django Rest Framework SQL Query CORSDjango Rest 框架 SQL 查询 CORS
【发布时间】:2021-08-22 19:49:25
【问题描述】:

我正在构建一个工具,用户可以在其中输入某些参数,当他们点击提交时,它将查询 mssql 数据库并返回一些数据。数据通过 Django Rest Framework 传递到 React 前端。数据库很大,因此某些查询可能需要几分钟才能返回。

我遇到的问题是,对于需要很长时间的查询,在“网络”选项卡中,状态显示 CORS 错误:MissingAllowOriginHeader。对于较短的查询,数据返回正常,对于加载 30-45 秒后的较长查询,我将收到 CORS 错误。另外请注意,这只发生在生产 IIS 服务器上,并且在我的本地服务器上工作正常。

我已经在我的 settings.py 中尝试了以下内容

CORS_ALLOW_ALL_ORIGINS = True
ACCESS_CONTROL_ALLOW_HEADERS = True

我如何从 sql server 获取数据

class SearchView(APIView):
    def post(self, request, *args, **kw):
        with connections["mssql"].cursor() as cursor:
            cursor.execute(sql_str)
            all = cursor.fetchall()

我如何从 React 发出请求

      axios
        .post(process.env.REACT_APP_SEARCH, holder, {
          headers: {
            Authorization: "JWT " + sessionStorage.getItem("refresh"),
            "Content-Type": "application/json",
          },
        })

【问题讨论】:

    标签: reactjs django iis django-rest-framework cors


    【解决方案1】:

    您可以按照以下解决方案:

    1.转到您网站的处理程序映射。

    2.向下滚动到“OPTIONSVerbHandler”。

    3.将“ProtocolSupportModule”更改为“IsapiHandler”。

    4.设置可执行文件:%windir%\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll。

    5.将此添加到您的 web.config 文件中:

    <system.webServer>
      <httpProtocol>
       <customHeaders>
         <add name="Access-Control-Allow-Origin" value="*" />
         <add name="Access-Control-Allow-Methods" value="GET, PUT, POST, DELETE, HEAD, OPTIONS" />
         <add name="Access-Control-Allow-Credentials" value="true"/>
         <add name="Access-Control-Allow-Headers" value="X-Requested-With, origin, content-type, accept" />
       </customHeaders>
      </httpProtocol>
    </system.webServer>
    

    【讨论】:

      猜你喜欢
      • 2018-10-17
      • 2022-01-25
      • 1970-01-01
      • 1970-01-01
      • 2018-08-20
      • 2015-05-08
      • 2015-10-10
      • 2014-09-19
      • 1970-01-01
      相关资源
      最近更新 更多