【发布时间】:2016-03-22 07:46:41
【问题描述】:
我正在编写一个需要访问 WebService(我无法控制)的服务 - 我想在我的应用程序中使用的 API。我已经在浏览器中访问了有问题的 url,并且登录成功,并且可以看到我的访问令牌,但是当我尝试使用 $http 访问同一页面时,我在 IE 的开发者控制台中出现错误。
angular.module("app").factory("MyService", function($http){
var serviceUrl = "http://some-web-page/service.asmx/";
var logOn = function(username, password){
var getUrl = serviceUrl + "logOn?username="+username+"&password="+password;
$http.get(getUrl).then(
function successCallback(response){
console.log("Success");
console.log(response);
}, function errorCallback(response){
console.log("Error");
console.log(response);
}
);
};
return {
logOn: logOn
};
}).config(function($httpProvider){
$httpProvider.defaults.useXDomain = true;
delete $httpProvider.defaults.headers.common['X-Requested-With'];
});
在控制台中我得到了
HTML1300: Navigation occurred.
File: home
HTML1503: Unexpected start tag.
File: home, Line: 5, Column: 1
SEC7118: XMLHttpRequest for http://some-web-page/service.asmx/logOn?username=username&password=password required Cross Origin Resource Sharing (CORS).
File: home
SEC7115: :visited and :link styles can only differ by colour. Some styles were not applied to :visited.
File: home
SEC7120: Origin http://localhost not found in Access-Control-Allow-Origin header.
File: home
SCRIPT7002: XMLHttpRequest: Network Error 0x80070005, Access is denied.
【问题讨论】:
-
您必须在服务器中启用 CORS(我知道您无法控制服务器)。它通常在服务器中关闭以防止跨站点请求伪造。
-
为什么有人会构建一个无法访问的 API?有没有其他方法可以做到这一点?
-
我认为您正在本地工作,这导致了问题。您可以在 localhost 上关闭网络安全。但不太确定生产服务器 - 在这里你会找到关闭的步骤 -> By Pass CORS
-
我正在运行本地服务器 (WampServer) 并在 localhost 上运行。
-
通过命令提示符导航到安装路径并运行以下命令:
Chrome.exe --disable-web-security
标签: angularjs web-services http-request