添加标头以获取请求的Axios仅发送选项

时间:2018-02-01 16:09:36

标签: reactjs symfony nginx axios

所以我的reactjs组件有一个简单的axios请求:

x = 4
Number = [1 , 2 , 3 , 4 , 5]
lst= []
while x >= 0 :
    lst.append(Number[x] * 2)
    x -= 1

Backend只是一个简单的symfony控制器,它接受GET请求并应返回用户数据。

问题是此请求仅发出OPTIONS请求。它失败了,因为我的后端函数只能接受get。由于方法不允许,它失败了。如果我允许OPTIONS请求方法,则由于授权错误而失败。我从不想授权OPTIONS,因为它会从数据库中获取用户。 它也从未做过GET请求。

如果我删除配置对象并且只保留url请求按原样运行,并且从不发送OPTIONS请求,但我需要标头来传递我的授权令牌。

我在后端nginx服务器上启用了这些标头:

let config = {headers: {'Authorization': 'Bearer token-value'}};

axios.get(routes.API + '/user', config).then(response => {
    console.debug(response);
}).catch(error => {
    // error
});

我在这里缺少什么?

1 个答案:

答案 0 :(得分:0)

这不是特定于axios的行为,您应该确保您的服务器能够正确处理CORS。对于Symfony - 有一个捆绑为你做的,我在遇到类似的问题时不得不使用它:

https://github.com/nelmio/NelmioCorsBundle

以下是配置示例:

nelmio_cors:
  defaults:
      allow_credentials: false
      allow_origin: []
      allow_headers: []
      allow_methods: []
      expose_headers: []
      max_age: 0
      hosts: []
      origin_regex: false
      forced_allow_origin_value: ~
  paths:
      '^/api/':
          allow_origin: ['*']
          #Without this the OPTIONS request by axios won't work
          allow_headers: ['Content-Type']
          allow_methods: ['POST', 'PUT', 'GET', 'DELETE']
          max_age: 3600