我有一个angular.js应用程序,我需要做CORS请求.
我想使用角度资源定义我的休息服务“角度”,如下所述:http://docs.angularjs.org/tutorial/step_11.
但是我没有找到一种办法让这个工作.
在谷歌我找到以下示例代码:http://jsfiddle.net/ricardohbin/E3YEt/,但这似乎不适用于角度资源.
这是我的app.js
- 'use strict';
- angular.module('corsClientAngularApp',['helloServices'])
- .config(function ($routeProvider) {
- $routeProvider
- .when('/',{
- templateUrl: 'views/main.html',controller: 'MainCtrl'
- })
- .otherwise({
- redirectTo: '/'
- });
- });
这是我的services.js与其余的服务
- angular.module('helloServices',['ngResource']).
- factory('Hello',function($resource){
- return $resource('http://localhost:8080/cors-server/hello/:name',{},{
- query: {method:'GET',params:{name:'name'},isArray:false}
- });
- });
这是我的main.js与控制器使用$http,这个工程!
- 'use strict';
- angular.module('corsClientAngularApp')
- .controller('MainCtrl',function ($scope,$http,Hello) {
- $http.defaults.useXDomain = true;
- $http.get('http://localhost:8080/cors-server/hello/stijn')
- .success(function(data) {
- $scope.hello = data;
- });
- });
这是我使用角度资源的main.js的另一个版本.这不工作:(
- 'use strict';
- angular.module('corsClientAngularApp')
- .controller('MainCtrl',Hello) {
- $http.defaults.useXDomain = true;
- $scope.hello = Hello.query({name:'stijn'});
- });
这是工作请求中的标题(来自chrome devtools):
- Request URL:http://localhost:8080/cors-server/hello/stijn
- Request Method:OPTIONS
- Status Code:200 OK
- Request Headers
- Accept:*/*
- Accept-Charset:ISO-8859-1,utf-8;q=0.7,*;q=0.3
- Accept-Encoding:gzip,deflate,sdch
- Accept-Language:nl-NL,nl;q=0.8,en-US;q=0.6,en;q=0.4
- Access-Control-Request-Headers:accept,origin,x-requested-with
- Access-Control-Request-Method:GET
- Cache-Control:max-age=0
- Connection:keep-alive
- Host:localhost:8080
- Origin:http://localhost:9000
- Referer:http://localhost:9000/
- User-Agent:Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.31 (KHTML,like Gecko) Chrome/26.0.1410.64 Safari/537.31
- Response Headers
- Access-Control-Allow-Headers:accept,x-requested-with
- Access-Control-Allow-Methods:GET
- Access-Control-Allow-Origin:*
- Content-Length:0
- Date:Thu,25 Apr 2013 10:42:34 GMT
- Server:Apache-Coyote/1.1
这些是NOt工作请求中的头文件:
- Request URL:http://localhost/cors-server/hello/stijn
- Request Method:OPTIONS
- Status Code:200 OK
- Request Headers
- Accept:*/*
- Accept-Charset:ISO-8859-1,x-requested-with
- Access-Control-Request-Method:GET
- Cache-Control:max-age=0
- Connection:keep-alive
- Host:localhost
- Origin:http://localhost:9000
- Referer:http://localhost:9000/
- User-Agent:Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.31 (KHTML,like Gecko) Chrome/26.0.1410.64 Safari/537.31
- Response Headers
- Allow:GET,HEAD,POST,OPTIONS,TRACE
- Connection:Keep-Alive
- Content-Length:0
- Content-Type:text/plain
- Date:Thu,25 Apr 2013 10:41:12 GMT
- Keep-Alive:timeout=5,max=100
- Server:Apache/2.2.22 (Win32)
使用角度资源时,请求url看起来是错误的.但为什么?
谢谢!
$资源的URL接受使用冒号的参数.因此,当在url中使用port时,需要转义冒号的端口.这在
$resource docs中解释