gpt4 book ai didi

javascript - Angular2 和 tomcat 8 : CORS automatically sends a OPTION request instead of POST

转载 作者:行者123 更新时间:2023-11-28 22:17:13 24 4
gpt4 key购买 nike

我正在试用 angular2,所以我是新手。我有一个带有 jersey 服务器的 tomcat 8,我仍然在 android 应用程序中使用它,没有任何问题。因此,当我尝试使用 angular2 对服务器实现一个简单的 POST 请求时,由于不允许使用 CORS,它失败了。我在 Angular 请求中添加了 allow-cross-origins header 。这是代码:

 var creds = "email=" + email + "&password=" + password;
let headers = new Headers({'Content-Type': 'application/x-www-form-urlencoded'});
headers.append('Access-Control-Allow-Origin', '*');
let options = new RequestOptions({headers: headers});
this.http.post("http://192.168.1.70:9000/api/login", creds, options)
.map(res => res.json())
.subscribe(
data => this.saveJwt(data),
err => this.logError(err),
() => console.log('Authentication Complete')
);

在服务器端,我在 tomacat 8 web.xml 文件上添加了过滤器。

 <filter>
<filter-name>CorsFilter</filter-name>
<filter-class>org.apache.catalina.filters.CorsFilter</filter-class>
<init-param>
<param-name>cors.allowed.origins</param-name>
<param-value>*</param-value>
</init-param>
<init-param>
<param-name>cors.allowed.methods</param-name>
<param-value>GET,POST,HEAD,OPTIONS,PUT</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>CorsFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>

这有什么问题吗?我知道问题出在浏览器安全策略上,但我只需要在 localhost 中对 CRUD 应用程序进行简单测试,其中 tomcat 运行在 localhost:9000 上,angular 应用程序运行在 localhost:3000 上。

最佳答案

尝试删除 headers.append('Access-Control-Allow-Origin', '*'); 行。

Access-Control-Allow-Origin header 是服务器响应 header 。如果将它添加到请求中,它会导致浏览器发送 preflight OPTIONS request ,正如您所看到的那样。

关于javascript - Angular2 和 tomcat 8 : CORS automatically sends a OPTION request instead of POST,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41790837/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com