Java 如何使用angular 6绕过交叉原点错误(Firefox CORS错误、Chrome飞行前错误)
我正在开发一个前端,用作RESTAPI的客户端。使用角度6 问题是,当我使用HttpClient发送post请求时,会出现这个跨源错误。 我的代码: 服务: 在mozilla firefox中: 已阻止跨源请求:同一源策略不允许读取 位于的远程资源 . (理由: CORS请求未成功) 在google chrome中: 加载失败 :回应 预飞无效(重定向)Java 如何使用angular 6绕过交叉原点错误(Firefox CORS错误、Chrome飞行前错误),java,angular,httpclient,angular6,Java,Angular,Httpclient,Angular6,我正在开发一个前端,用作RESTAPI的客户端。使用角度6 问题是,当我使用HttpClient发送post请求时,会出现这个跨源错误。 我的代码: 服务: 在mozilla firefox中: 已阻止跨源请求:同一源策略不允许读取 位于的远程资源 . (理由: CORS请求未成功) 在google chrome中: 加载失败 :回应 预飞无效(重定向) 我已经测试了允许控件扩展到我的浏览器。很高兴知道我有一个内容类型标题:当您使用与用于加载Web应用的URL(包括端口)不同的URL调用服务时,
我已经测试了允许控件扩展到我的浏览器。很高兴知道我有一个内容类型标题:当您使用与用于加载Web应用的URL(包括端口)不同的URL调用服务时,会发生CORS错误。这是浏览器内置的安全功能
为了避免这种情况,您的服务器需要通过添加头来允许跨源请求。您可以手动添加标题,这需要一点努力,或者,如果您使用的是Spring之类的工具,则会有一个注释。有很多方法可以解决这个问题;关于如何处理CORSS客户端,请参见GitHub上的: JSONP 警告:这不是每个API都允许的,在调用某些API时可能会中断 您可以使用JSONP(JSON的缩写)在生产中绕过CORS 有填充物,也是一种“黑客”。但这是一种广泛使用的黑客手段 许多API都支持这一点。您发送的不是纯JSON请求,而是 您正在将数据包装到一个得到计算的函数中。JSONP 在下面的链接中解释: 或使用代理: 代理 警告:很好的服务,但您依赖于这些服务 为了工作,如果它们出现故障,你的应用程序也会出现故障 您可以使用代理您的请求并自动 为您的应用程序启用CORS:
谢谢Steve,所以在客户端没有太多事情要做,是吗?是的。在客户端执行操作基本上破坏了浏览器的安全性。这是我的第一个爱好,直到我阅读了文档。
export class ApiConfigLogin {
constructor(private http: HttpClient,
private dataSrvc: DataService) {}
private _url = this.dataSrvc.getMainUrl() + '/sec-login';
private options = {
headers: new HttpHeaders().set('Content-Type', 'application/json')
};
getResults(reqbody): Observable < ApiConfigLoginInterface > {
console.log(this._url);
return this.http.post < ApiConfigLoginInterface > (this._url, reqbody, this.options);
}
}
this._ApiConfigLogin.getResults(body)
.subscribe(data => {
this.enableForms();
if (data.status === 401) {
this.lowerMessage = data.message;
} else {
console.log(1);
}
});