React + Codeigniter对预检的响应无效

时间:2018-12-27 01:15:36

标签: php reactjs codeigniter

我有一个使用Codeigniter MVC构建的网站,但随着现代趋势的发展,我试图基于react创建一个前端。我仍然想使用原始的codeigniter框架和控制器,但是要渲染视图,我希望它返回纯JSON。目前,我一直无法将来自在localhost:3000上以调试模式运行的react应用程序的请求发送给在apache http://mywebsite:80上运行的我的codeigniter api。

这是我发起请求的方式:

fetch("http://mywebsite/Api" + route + '/', {
        headers: {
          'Accept': 'application/json',
          'Content-Type': 'application/json'
        },
        method: "POST",
        redirect: 'follow',
        body: JSON.stringify(data),
        dataType : 'json'
      })

这是我在控制台中遇到的错误:

  

无法加载http://mywebsite/ApiAuth/login/:飞行前响应   无效(重定向)

我的php页面将以下信息发送回去:

header('Content-Type: application/json;charset=UTF-8');
header('Access-Control-Allow-Origin: *');
header('Access-Control-Allow-Methods: DELETE, HEAD, GET, OPTIONS, POST, PUT');
header('Access-Control-Allow-Headers: Content-Type, Content-Range, Content-Disposition, Content-Description');
header('Access-Control-Max-Age: 1728000');

控制台输出:

Request URL: http://mywebsite/ApiAuth/login/
Request Method: OPTIONS
Status Code: 302 Found
Remote Address: [::1]:80
Referrer Policy: no-referrer-when-downgrade

1 个答案:

答案 0 :(得分:0)

能够通过设置Apache响应标头和重定向方法来解决此问题,

Function AvgLast5(SearchRange As Range, Optional Row_0_Column_1 As Integer = 0) _
    As Double

  Dim vntRange As Variant   ' Range Array

  Dim i As Long             ' Range Array Rows Counter
  Dim j As Integer          ' Range Array Columns Counter
  Dim k As Long             ' Values Counter
  Dim dblSum As Double      ' Values Accumulator

  If SearchRange Is Nothing Then Exit Function

  vntRange = SearchRange.Value

  If Row_0_Column_1 = 0 Then
    ' By Row
      For i = UBound(vntRange) To 1 Step -1
        For j = UBound(vntRange, 2) To 1 Step -1
          If vntRange(i, j) <> "" And IsNumeric(vntRange(i, j)) Then
            k = k + 1
            dblSum = dblSum + vntRange(i, j)
            If k = 5 Then GoTo TiDa
          End If
        Next
      Next
    Else
    ' By Column
      For j = UBound(vntRange, 2) To 1 Step -1
        For i = UBound(vntRange) To 1 Step -1
          If vntRange(i, j) <> "" And IsNumeric(vntRange(i, j)) Then
            k = k + 1
            dblSum = dblSum + vntRange(i, j)
            If k = 5 Then GoTo TiDa
          End If
        Next
      Next
  End If

TiDa:

  If k > 0 Then
    AvgLast5 = dblSum / k
  End If

End Function