我使用业力作为我的角项目测试运行框架,我的角有服务器服务需要访问另一个web url来获取像http://localhost:8081/common/countries这样的数据,获取关于国家的所有信息。我的问题是我的业力从localhost:9876开始,它需要从http://localhost:8081/common/countries获得数据,这导致了浏览相同来源策略的跨域问题。因此,我在我的控制台中得到了以下错误:
Error: Unexpected request: GET http://localhost:8081/common/countries
No more request expected
at Error (<anonymous>)
at $httpBackend (http://localhost:9876/absoluteC:/WebUI/WebUI/test/lib/angular/angular-mocks.js:934:9)
at sendReq (http://localhost:9876/absoluteC:/WebUI/WebUI/vendor/angular/angular.js:9087:9)
at $http (http://localhost:9876/absoluteC:/WebUI/WebUI/vendor/angular/angular.js:8878:17)
at Object.getMock (http://localhost:9876/base/share/services.js:644:17)
at Object.get (http://localhost:9876/base/share/services.js:347:28)
at Object.getCountries (http://localhost:9876/base/share/services.js:221:22)
at Object.clSingleSelectConfig.nationality.getData (http://localhost:9876/base/share/directives.js:146:32)
at http://localhost:9876/base/share/directives.js:192:44
at nodeLinkFn (http://localhost:9876/absoluteC:/WebUI/WebUI/vendor/angular/angular.js:4360:13) 我已经尝试过:1安装业力插件业力-铬启动程序,并在我的配置文件中添加--disable-web-security。但不起作用。2头中的set'Access-Control-Allow-Origin''Access-Control-Allow-Headers''Access-Control-Allow-Methods‘,以便在服务器响应中允许原始访问。
以上都不管用,那怎么解决我的问题呢?
发布于 2013-10-21 02:57:47
对于跨域请求,请使用expectJSONP,并确保使用回调参数。
describe('stackoverflow.activity tests', function () {
var svc, httpBackend;
beforeEach(function (){
module('ngResource');
module('stackoverflow.activity');
inject(function($httpBackend, StackoverflowActivityService) {
svc = StackoverflowActivityService;
httpBackend = $httpBackend;
});
});
afterEach(function() {
httpBackend.verifyNoOutstandingExpectation();
httpBackend.verifyNoOutstandingRequest();
});
it('should send the message and return the response', function (){
var returnData = { testing: 'anything'};
httpBackend.expectJSONP('http://api.stackexchange.com/2.1/users/gigablox/timeline?callback=JSON_CALLBACK').respond(returnData);
svc.events({
user:'gigablox',
params:{
callback:'JSON_CALLBACK'
}
}).get(function(user) {
expect(user.testing).toEqual('anything');
});
httpBackend.flush();
});
});https://stackoverflow.com/questions/19485067
复制相似问题