无法加载,预检的响应包含无效的HTTP状态代码500

时间:2018-03-20 19:18:18

标签: spring angular http http-get

我有客户端调用服务器的http get方法,但是当运行它时,方法是OPTIONS,这是我在Chrome开发工具中看到的输出,用于GET方法,

Request URL: http://localhost:9090/area
Request Method: OPTIONS
Status Code: 500 
Remote Address: [::1]:9090
Referrer Policy: no-referrer-when-downgrade

响应标头

 Access-Control-Allow-Credentials: true
Access-Control-Allow-Headers: authorization, content-type
Access-Control-Allow-Methods: GET
Access-Control-Allow-Origin: http://localhost:4201
Allow: GET, HEAD, POST, PUT, DELETE, TRACE, OPTIONS, PATCH
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Connection: close
Content-Length: 0
Date: Tue, 20 Mar 2018 18:49:59 GMT
Expires: 0
Pragma: no-cache
Vary: Origin
X-Content-Type-Options: nosniff
X-Frame-Options: DENY
X-XSS-Protection: 1; mode=block

和请求标题是,

Accept: */*
Accept-Encoding: gzip, deflate, br
Accept-Language: en-US,en;q=0.9
Access-Control-Request-Headers: authorization,content-type
Access-Control-Request-Method: GET
Connection: keep-alive
Host: localhost:9090
Origin: http://localhost:4201
User-Agent: Mozilla/5.0 (Windows NT 6.3; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.162 Safari/537.36

为什么GET方法没有被调用,我知道这里已经有了一些答案,但我不太了解,有人可以帮助我明确理解吗?提前谢谢。

1 个答案:

答案 0 :(得分:0)

OPTIONS请求是来自浏览器的所谓预检请求。一个简单的方法基本上是浏览器向服务器发送初始请求,要求获得许可,然后执行GETPOST或任何其他动词。只要请求需要执行权限,就会发生这种情况。如果服务器回复说您有权运行您想要的请求,那么它将执行初始请求(在这种情况下为GET)。如果OPTIONS请求被拒绝,它将不会执行任何后续请求。您可以将其视为测试水域的一种方式:)

被拒绝的理由可能有几个。您可能没有正确的标头,可能缺少身份验证或身份验证令牌,依此类推。

从我在您的请求中看到的内容,您正在执行从localhostlocalhost的请求。那会导致CORS出现问题。

Here’s关于如何为CORS(您在下面的评论中使用的服务器)配置spring的链接