相关疑难解决方法(0)

Access-Control-Allow-Origin不允许使用$ http.get,但$ .ajax是

我从我控制的远程服务器获取json时遇到问题.我有2个Web应用程序,一个服务数据并在端口3311上运行,另一个请求数据,正在端口5000上运行.

使用jquery以下工作:

$.ajax({
  url: "http://localhost:3311/get-data",
  type: 'GET',
  dataType: 'json',
  beforeSend: function(xhr) {
    xhr.setRequestHeader("x-some-header", "some-value");
  }
})
.done(function(data) { 
    $rootScope.$apply(function() {d.resolve(data); });
})
.fail(function(data) {
    $rootScope.$apply(function() {d.reject(data); });
});
Run Code Online (Sandbox Code Playgroud)

当使用angular尝试相同的get请求时

$http
    .get("http://localhost:3311/get-data", { headers: {"x-some-header": "some-value"} })
    .success(function(data) { d.resolve(data);})
    .error(function(data) { d.reject(data); });
Run Code Online (Sandbox Code Playgroud)

我收到错误

Origin http://localhost:5000 is not allowed by Access-Control-Allow-Origin.
Run Code Online (Sandbox Code Playgroud)

控制台日志显示OPTIONS请求返回HTTP200后发生的错误

OPTIONS http://localhost:3311//get-data 200 (OK) angular.min.js:99

(anonymous function) angular.min.js:99

l angular.min.js:95

m angular.min.js:94

(anonymous function) app.js:78

b.extend.each jquery-1.9.1.min.js:3

b.fn.b.each jquery-1.9.1.min.js:3

(anonymous function) app.js:76

d angular.min.js:28

instantiate angular.min.js:28

(anonymous function) …
Run Code Online (Sandbox Code Playgroud)

ajax cors angularjs

44
推荐指数
1
解决办法
9万
查看次数

使用Apache在单独的域上运行Flask api和Angularjs前端,正确配置Angularjs和CORS

这已经通过Stackoverflow进行了讨论,但我无法找到使其工作的解决方案.我甚至尝试过这篇文章中讨论的很多内容(CORS问题.烧瓶< - > AngularJS),因为它与我的设置完全相关,但我仍然很丢失.

我有一个本地运行的python flask api服务器.我已将此域名命名为bac-api.这是vhost的样子.

<VirtualHost *:80>
    ServerName bac-api

    WSGIDaemonProcess bacapi python-path=/home/lumberjacked/workspace/bas/development/lib/python2.7/site-packages
    WSGIScriptAlias / /home/lumberjacked/workspace/bas/development/bac-api/bacapi.wsgi
    Header set Access-Control-Allow-Origin "*"
    Header set Access-Control-Allow-Headers "Origin, X-Requested-With, Content-Type, Accept, application/json"
    Header set Access-Control-Allow-Methods "POST, GET, OPTIONS"

    <Directory /home/lumberjacked/workspace/bas/development/bac-api>
        WSGIProcessGroup bacapi
        WSGIApplicationGroup %{GLOBAL}
        Order deny,allow
        Allow from all
    </Directory>

#SSLEngine on
#SSLCertificateFile /etc/apache2/ssl/bac_api_ssl.crt
#SSLCertificateKeyFile /etc/apache2/ssl/bac_api_ssl.key
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)

我有一个angularjs站点作为我的前端运行在一个名为manage.bac的独立域上.我正在编写一个连接到bac-api的身份验证服务,并发布api密钥和/或用户凭据,询问服务器用户是否经过身份验证.

我可以卷曲到服务器,这可以工作并返回一个响应.

curl -X POST -H "Content-Type: application/json" -d '{ "api": "7f3d6d7338b921ae4ca95cecc452ef1790005ec10c2343fabe5a59ea" }' http://bac-api/authenticated/  

response -- {"authenticated": false}
Run Code Online (Sandbox Code Playgroud)

还要管理.bac和我的登录信用卡email@email.com和密码我得到相同的响应,但我已经配置它返回401如果您没有使用存储的会话进行身份验证.

POST http://bac-api/authenticated/ 401 (UNAUTHORIZED) bac-api/authenticated/:1 …
Run Code Online (Sandbox Code Playgroud)

apache cors flask angularjs

6
推荐指数
1
解决办法
3790
查看次数

标签 统计

angularjs ×2

cors ×2

ajax ×1

apache ×1

flask ×1