所以我的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
});
我在这里缺少什么?
答案 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