我正在尝试使用Angular这样的请求:
(function () {
'use strict';
angular.module('app')
.service('requestService',requestService);
function requestService($http) {
this.post = function(url, data) {
return $http({
'method': 'POST',
'url': url,
'data': $.param(
data
)
});
}
}
})();
我在控制台中收到错误:
XMLHttpRequest cannot load http://lsupport.dev/api/v1/login. Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost:3000' is therefore not allowed access.
我的http://localhost:3000
是用Gulp构建的。我已经在网上搜索了很多,但我找不到解决方案。
答案 0 :(得分:0)
您需要在服务器(远程)上启用CORS ,以允许代码执行具有不同域的请求。
答案 1 :(得分:0)
您必须访问服务器所在的服务器或服务器所有者需要启用它。
请查看以下帖子了解更多详情。
Header set Access-Control-Allow-Origin in .htaccess doesn't work
Access-Control-Allow-Origin Multiple Origin Domains?
Homestead是Nginx服务器请按照步骤操作。要解决它。
访问控制源与AngularJS无关,服务器端响应特定请求的问题根据您的服务器类型(如Apache,Nginx)有不同的配置。
答案 2 :(得分:-1)
您正在提出跨域请求。
换句话说,您发出请求的服务器的域名与您请求的服务器的域名不同。
由于此处涉及“风险”,您提出请求的服务器必须设置Access-Control-Allow-Origin标头。谷歌你应该使用哪些。这允许从任何域(或域的白名单)向此服务器发出HTTP请求。
此外,在进行交叉原始POST和PUT请求时,客户端首先会发出飞行前OPTIONS请求。
此OPTIONS请求有一个目的,用于确定它们是否正确访问Access-Control-Allow-Origin标头。如果是,它将发出POST请求。如果没有,它将失败。这是为了节省在不允许的情况下发布大量数据的时间。
如果您在浏览器开发者控制台中检查NET选项卡,您将看到此OPTIONS请求。