如何判断响应是预检,以及如何处理?

时间:2019-01-24 14:38:24

标签: cors

我设法获得了对我的POST的回复。显然,这是对预检请求的响应。这是响应:

HTTP/1.1 200 OK
Date: Thu, 24 Jan 2019 00:19:54 GMT
Server: Apache
X-Powered-By: PHP/5.6.36
Set-Cookie: cisession=ok8ilu3sqp51i2s6tkkuoh6aa9r9oeu6; expires=Thu, 24-Jan-
2019 08:19:55 GMT; Max-Age=28800; path=/; HttpOnly
X-Frame-Options: SAMEORIGIN
Access-Control-Allow-Origin: *
Access-Control-Allow-Headers: Accept,Authorization,Content-Type,Origin
Access-Control-Allow-Methods: GET, POST, PATCH, PUT, DELETE
Access-Control-Max-Age: 86400
Content-Length: 0
Keep-Alive: timeout=2, max=100
Connection: Keep-Alive
Content-Type: text/html; charset=UTF-8

我的浏览器代码得到200,然后令人窒息,因为它期望responseText是json缓冲区。但事实并非如此。它返回的是对“ onload”事件中的预检请求的空响应。我尝试等待onloadend,但得到相同的空responseText。那我该怎么办?只是忽略第一个状态= 200并等待真正的状态?前200个来自飞行前响应,对我来说毫无用处。飞行前响应中是否有一些字段告诉我这只是信息传递?

1 个答案:

答案 0 :(得分:0)

如果它是对POST请求的响应,则不会是对预检请求的响应。

预检请求是一个OPTIONS请求(将由浏览器自动发送,因此您无需过多地担心自己,除非您正在编写自己的Web浏览器或需要响应的服务器端代码)。

请注意,如果发出要求进行预检的请求,则需要在双方中同时设置Access-Control-*标头,以应对预检和对实际请求的响应。< / p>

如果您发出POST请求并将其取回,那么您刚刚发出的请求是服务器以零长度(因此无效)的HTML文档响应的。