0

我试图找出我的客户端和 REST API 之间的通信问题。我可以确定问题,但我不确定 OPTION 请求的答案中究竟缺少什么。我的应用程序正在创建一个 HTTP POST,它由浏览器使用 HTTP-OPTION 预检。该选项要求批准自定义内容类型。服务器回答 OPTION 后,不会发送 POST。

OPTIONS /element_collection/VizRundown/channels/ExampleChannel/playlists/continuous/ HTTP/1.1
Host: localhost:8580
User-Agent: Mozilla/5.0.........
Access-Control-Request-Method: POST
Access-Control-Request-Headers: content-type
Accept: */*
Accept-Encoding: gzip, deflate, sdch
Accept-Language: en-US......
Origin: null

答案如下所示:

200 OK
Access-Control-Allow-Origin: *
Allow: GET, POST, OPTIONS
Content-Type: text/plain
Server: MediaSequencer/1.23.1.11957 soul/014dfd135460
Transfer-Encoding: chunked

我是否正确,答案中应该有一行批准请求的内容类型?像这样:

Access-Control-Allow-Headers: content-type
4

1 回答 1

0

不,根据规范的相关部分,它不是必需的。

http://www.w3.org/TR/cors/#resource-preflight-requests

为了响应预检请求,资源指示它愿意处理哪些方法和标头(简单方法和简单标头除外)以及它是否支持凭据。

http://www.w3.org/TR/cors/#terminology

如果标头字段名称与 Accept、Accept-Language 或 Content-Language 的 ASCII 大小写不敏感匹配,或者如果它是 Content-Type 和标头字段的 ASCII 不区分大小写匹配,则称标头为简单标头value 媒体类型(不包括参数)是对 application/x-www-form-urlencoded、multipart/form-data 或 text/plain 的不区分大小写的 ASCII 匹配。

于 2014-08-04T13:44:08.553 回答