此问题不是由角度引起的, 而是由nelmioCors捆绑软件的配置引起的, 该配置不允许正确地向你的api发送POST请求。
【Web Api(Symfony 2或3和预检的Angular响应具有无效的HTTP状态代码403)】如果你遇到此问题, 则可能是你在symfony项目中添加了NelmioCorsBundle来添加cors-header, 否则会出现跨原点错误。
要解决该问题, 请将你的api路径的allow_headers属性更改为:
nelmio_cors:
defaults:
allow_credentials: false
allow_origin: []
allow_headers: []
allow_methods: []
expose_headers: []
max_age: 0
hosts: []
origin_regex: false
paths:
# Important api settings :
# Access-Control-Request-Method
'^/api/':
allow_origin: ['*']
allow_headers: ['X-Custom-Auth', 'Content-Type', 'X-Requested-With', 'accept', 'Origin', 'Access-Control-Request-Method', 'Access-Control-Request-Headers', 'Authorization']
allow_methods: ['POST', 'PUT', 'GET', 'DELETE']
max_age: 3600
'^/oauth/':
allow_origin: ['*']
allow_headers: ['X-Custom-Auth']
allow_methods: ['POST', 'PUT', 'GET', 'DELETE']
max_age: 3600
'^/':
origin_regex: true
allow_origin: ['^http://localhost:[0-9]+']
allow_headers: ['X-Custom-Auth']
allow_methods: ['POST', 'PUT', 'GET', 'DELETE']
max_age: 3600
hosts: ['^api\.']
可以将allow_origin和allow_headers设置为*以接受任何值, 但是必须明确列出允许的方法。路径必须至少包含一项。
注意:如果你允许POST方法并在框架中启用了HTTP方法覆盖, 它将使API用户也可以执行PUT和DELETE请求。这样你的请求就可以执行而不会出现任何问题:
$http.post('https://yoururl/api/user', {'userName': 'admin', 'password': 'test'}, {headers: {'Accept': 'application/json', 'Content-Type': 'application/json'}}).then(function success(response) {console.log(response);
});
推荐阅读
- 如何使用Twig获取路径,实际路由和主机域的规范URL
- 如何在Symfony 3中创建依赖选择(依赖下拉列表)
- 如何使用PHP根据日期计算年龄
- IN3026 游戏技术
- android studio NDK上的turbo c ++ graphics.h程序
- Android Things(支持NDK吗( [关闭]))
- 无法配置NDK android studio并获取错误
- 如何在init.rc文件中完全禁用Android L中的SELinux()
- Android NDK抛出信号SIGSEGV(通过JNI获取Activity中的GoogleSignInClient后无效的地址)