Javascript 否';访问控制允许原点';请求的资源上存在标头-5
我正试图从我的angular服务访问web服务,并设置了与跨原点相关的头。但是,我仍然无法访问web服务。浏览器一直在说Javascript 否';访问控制允许原点';请求的资源上存在标头-5,javascript,angular,web-services,cross-browser,cross-domain,Javascript,Angular,Web Services,Cross Browser,Cross Domain,我正试图从我的angular服务访问web服务,并设置了与跨原点相关的头。但是,我仍然无法访问web服务。浏览器一直在说 对飞行前请求的响应未通过访问控制检查:请求的资源上不存在“访问控制允许来源”标头。起源'http://localhost:4200因此,不允许访问。响应的HTTP状态代码为403。 我可以在浏览器(chrome)和邮递员中访问相同的URL,但不能在应用程序中访问 private headers = new HttpHeaders() .set('Access-Control-
对飞行前请求的响应未通过访问控制检查:请求的资源上不存在“访问控制允许来源”标头。起源'http://localhost:4200因此,不允许访问。响应的HTTP状态代码为403。
我可以在浏览器(chrome)和邮递员中访问相同的URL,但不能在应用程序中访问
private headers = new HttpHeaders()
.set('Access-Control-Allow-Origin', '*')
.set('Content-Type', 'application/json;charset=UTF-8')
.set('Access-Control-Allow-Headers', '*')
.set('Access-Control-Allow-Methods', 'GET, OPTIONS');
public getData(): Promise<Object> {
return this._http.get(this._url, {headers: this.headers})
.toPromise()
.then(response => {
return response;
}
)
.catch(testService.handleError);
private headers=new-HttpHeaders()
.set('Access-Control-Allow-Origin','*'))
.set('Content-Type','application/json;charset=UTF-8')
.set('Access-Control-Allow-Headers','*'))
.set('Access-Control-Allow-Methods','GET,OPTIONS');
public getData():承诺{
返回此。_http.get(此。_url,{headers:this.headers})
.toPromise()
。然后(响应=>{
返回响应;
}
)
.catch(testService.handleError);
}
这里有我遗漏的东西吗 因此,有两种方法
// ~ Cross origin resource sharing ~ //
var cors = require('cors');
// ~ Initialize the app ~ //
var app = express();
// ~ Enbling CORS ~ //
app.use(cors());
我希望这有帮助。如果有任何错误,请通过注释告知我。解决此问题的方法有多种,但首先需要确定客户端发送的额外请求头参数(如果有) 使用broswer的任何开发人员控制台都可以更早地发现这一点。另一个指针是检查
options
call(如果有)的响应/错误
一旦确定,您将需要从服务器启用适当的响应参数,在您的情况下,选项调用似乎没有在响应中设置访问控制允许原点
如果这有助于您诊断问题,请告诉我。试试JSONP。基本上按照WC3学校
JSONP是一种发送JSON数据的方法,无需担心跨域问题
JSONP不使用XMLHttpRequest对象
这是一个关于JSONP如何工作的解释我们可以看到这个的值吗?\u url
请?发布的代码是针对请求资源的客户端还是针对服务器的?发送响应时,需要设置CORS头的是服务器,而不是请求中的客户端。如果我认为不错,您正在尝试访问本地主机上运行的web服务。要做到这一点,您必须在web服务中允许COR,而不是在angular中。错误显示您尝试访问的服务器(或web服务)没有授权您请求他。服务器这样做是出于安全考虑。如果您想了解更多信息,请检查谷歌上的CORS错误。对不起,我的页面尚未刷新,CRice回答了您的问题OK。谢谢@CRice&Nathan。发布的代码用于从服务器请求资源。