gpt4 book ai didi

angularjs - 使用 Angular JS、cors 调用 symfony 2 rest api

转载 作者:行者123 更新时间:2023-12-04 02:16:27 26 4
gpt4 key购买 nike

我正在使用 angularJS 调用 symfony 2 中的 restfull API。

我的 angularJS 应用程序 url 是 angular.me.dev我的 symfony2 api url 是 api.me.dev

我关注了this tutorial制作我的 restfull api。

问题是当我尝试调用这个 api 时

$http.({
method: 'GET',
url: 'http://api.me.dev/api/articles',
headers: {
'Authorization': 'Bearer ' + token
}
})

发生错误:(在谷歌浏览器上):

XMLHttpRequest cannot load http://api.me.dev/api/articles. Response for preflight has invalid HTTP status code 405

(以及在 firefox 上):

The Same Origin Policy disallows reading the remote resource

我发现了什么?

然后我决定像这样在我的服务器上允许 header 、来源...:

Header always set Access-Control-Allow-Origin "*"
Header always set Access-Control-Allow-Credentials "true"
Header always set Access-Control-Allow-Methods "PUT, DELETE, POST, GET, OPTIONS"
Header always set Access-Control-Allow-Headers "*"

没有变化

我添加到 AngularJS

#coffee script
app.config ['$httpProvider', ($httpProvider) ->
$httpProvider.defaults.useXDomain = true
delete $httpProvider.defaults.headers.common['X-Requested-With']
]

然后我决定在我的 symfony api 中安装 NelmioCorsBundle,但我没有看到任何变化。

最后,我注意到调用有效

$http.({
method: 'GET',
url: 'http://api.me.dev/api/articles',
})

这里调用返回 401 响应(很好,我需要登录)

$http.({
method: 'GET',
url: 'http://api.me.dev/public/api/users',
})

这里我有一个电话不需要授权,它有效。我发现只有当我删除 header 时它才有效,而当我有任何 header (例如内容类型或授权)时会发生错误。

谁能帮帮我?谢谢!

最佳答案

好吧,我的错。

我说 NelmioCors 似乎不起作用,但我做错了什么。

我再次尝试使用 nelmio cors bundle,使用这个配置。

nelmio_cors:
paths:
'^/':
allow_origin: ['http://angular.me.dev']
allow_headers: ['Authorization', 'X-Requested-With', 'Content-Type', 'Accept', 'Origin', 'X-Custom-Auth']
allow_methods: ['POST', 'PUT', 'GET', 'DELETE', 'OPTIONS']
max_age: 3600

它的工作!NelmioCorsBundle 解决了这个问题。

https://github.com/nelmio/NelmioCorsBundle

关于angularjs - 使用 Angular JS、cors 调用 symfony 2 rest api,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33444425/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com