无法正确设置某些HTTP标头键值对
我有一个问题,通过向http.post添加一些HTTP标头键值。它应该很简单,但我没有正确设置。我们在服务器端使用spring-boot和客户端角度框架。 我们的后端请求下面的头值:无法正确设置某些HTTP标头键值对
'Content-Type' = 'application/json'
'X-Requested-With' = 'XMLHttpRequest'
'Cache-Control' = 'no-cache'
在有角的,我创建一个标题,该标题我添加RequestOptions并添加此选项添加到发布请求。下面 见代码:
.....
let myHead = new Headers();
myHead.append('Content-Type', 'application/json');
myHead.append('X-Requested-With', 'XMLHttpRequest');
myHead.append('Cache-Control', 'no-cache');
const options = new RequestOptions({ headers: myHead });
return this.http.post(ServerUrl,data, options).map((response: Response) => {..//do Something...}
...
正如你在上面看到的,它没有正确设置为一个关键值,因为我期待!?
如果我用一个工具做这个工作,例如邮递员插件,你怎么看呢应该corretly做到:
POST /ias-vwa/api/auth/login HTTP/1.1
Host: de00-fm26-l1:9090
Content-Type: application/x-www-form-urlencoded
X-Requested-With: XMLHttpRequest
Cache-Control: no-cache
Postman-Token: c9bc0404-bc1e-57eb-fca4-07bba9ee6d93
我尝试了很多不同的选项来设置的头,但我总是结束了,它会在一行始终设置是这样的:
访问控制请求报头:访问控制允许来源,缓存控制,内容类型,X-要求,与
我得到在浏览器上的错误:
XMLHttpRequest cannot load http://t00:9090/ias-vwa/api/auth/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:4200' is therefore not allowed access. The response had HTTP status code 401.
任何机构能给我提示吗?
好的我解决了这个问题。 正如本文以及从约尔丹尼科洛夫何况这是一个CORS issue
https://developer.mozilla.org/en-US/docs/Web/HTTP/Access_control_CORS#Preflighted_requests
如果在某些情况下(如文章中所描述)的浏览器会发送一个预检请求。在这个请求中,自定义值将只被命名为Access-Control-Request-Headers。这个请求将是OPTIONS方法的HTTP请求。在我们的例子中,服务器需要一个弹簧引导来实现一个过滤器来过滤这个请求,并评估这个断开头部是否被允许。在使用HTTP 200响应预检请求后,客户端将发送包含自定义标头的实际请求。如果请求来自其他域,此CORS问题非常重要。
所以,在客户端侧(angular2)的设置将被正确地设置。
希望它对任何人都有帮助
你正试图从你(你的应用程序活)发表不同的域,你在CORS问题上运行。 您需要在响应中添加Access-Control-Allow-Origin作为标题。
Access-Control-Allow-Origin: *
我们使用SpringBoot **的Java WebService ** RestFul-Server,并设置Access-Control-Allow-Origin:*我们之前有过这个问题并解决了它。我不认为ist是一个CORS问题,因为如果你看到标题请求,你会发现他没有正确添加键值。我还在客户端添加了Access-Control-Allwo-Origin:*。我们可以看到,我们调试服务器中的请求,报头的键值对未正确设置。 –
你在控制台中看到一些错误吗? –
由于未找到X-Requested-With:XMLHttpRequest的关键值,因此服务器预期会出现此错误。如果我用邮递员这样的工具和X-Requested-With:XMLHttpRequest被正确设置的关键值来做到这一切都很好。 –
我可以问问您使用什么后端来完成API调用? –
我们正在使用Java™编写的SpringBoot **的RESTFul-Server。我们遇到了CORS的问题,但是我们通过添加Access-Control-Allow-Origin来解决这个问题:* –