AngularJS没有检测到Access-Control-Allow-Origin标头?

Tay*_*ell 44 angularjs angularjs-http

我正在本地虚拟主机上运行角度应用程序(http://foo.app:8000).它正在使用另一个本地VirtualHost(http://bar.app:8000)发出请求$http.post.

$http.post('http://bar.app:8000/mobile/reply', reply, {withCredentials: true});
Run Code Online (Sandbox Code Playgroud)

在Chrome开发者工具的网络标签中,我当然会看到OPTIONS请求,并且响应中包含标题:

Access-Control-Allow-Origin: http://foo.app:8000
Run Code Online (Sandbox Code Playgroud)

但是,POST请求被取消,并出现以下错误:

请求的资源上不存在"Access-Control-Allow-Origin"标头.因此,不允许来源" http://foo.app:8000 "访问.

有没有人经历过这个?该Access-Control-Allow-Origin头非常清楚地包含在OPTIONS请求的响应,所以我不能为我的生命弄清楚为什么POST充当头不见了.

Access-Control-Allow-Credentials也设置为true.

use*_*734 47

这是本地开发者的chrome中的一个错误.尝试其他浏览器.然后它会工作.

  • 不是真的是一个bug,而是出于安全原因更多的东西.请参阅:http://stackoverflow.com/questions/3102819/chrome-disable-same-origin-policy (7认同)

Rui*_*ira 26

对于想要使用Chrome的用户,有一种解决方法.此扩展允许您从任何来源请求任何具有AJAX的站点,因为它会'Access-Control-Allow-Origin: *'为响应添加标头.

您也可以将此参数添加到Chrome启动器中:--disable-web-security.请注意,我仅将其用于开发目的,而不是用于正常的"网上冲浪".有关参考,请参阅使用标志运行Chromium.

最后,通过安装第一段中提到的扩展,您可以轻松启用/禁用CORS.

  • 扩展工作就像一个魅力! (3认同)

Gab*_*iel 7

我正在使用$ http服务向angularjs发送请求以运行瓶子http://localhost:8090/,我不得不应用CORS,否则我收到请求错误,例如"请求资源上存在"否'Access-Control-Allow-Origin'标头"

from bottle import hook, route, run, request, abort, response

#https://github.com/defnull/bottle/blob/master/docs/recipes.rst#using-the-hooks-plugin

@hook('after_request')
def enable_cors():
    response.headers['Access-Control-Allow-Origin'] = '*'
    response.headers['Access-Control-Allow-Methods'] = 'POST, GET, OPTIONS, PUT'
    response.headers['Access-Control-Allow-Headers'] = 'Origin, X-Requested-With, Content-Type, Accept'
Run Code Online (Sandbox Code Playgroud)