CORS:成功的OPTIONS请求后,Firefox不会发送POST请求...适用于Chrome和IE

时间:2013-12-31 09:17:57

标签: internet-explorer google-chrome firefox cross-domain cors

这适用于Chrome和IE,但不适用于Firefox(26)。

OPTIONS请求返回状态200,但Firefox仍然不会像Chrome和IE那样发送后续POST请求。

请求标题
选项..
访问控制请求标题:内容类型
访问控制请求方法:POST

回复标题
安全
访问控制允许的凭据:真
Access-Control-Allow-Headers:X-File-Upload内容类型
访问控制允许方法:POST选项
访问控制允许来源:*

IE和Chrome都会发送后续POST方法,一切正常,但Firefox不会发送POST请求。我知道这是因为(a)我检查了Firefox调试器中的净流量,(b)服务器没有收到POST请求。

不确定这是否相关,但这里有一些额外的信息:
X-File-Upload是我正在使用的商业jQuery文件上传包所需的自定义标头 我正在使用jQuery ajax来发出POST请求

这是Firefox的错误还是我做错了什么?我怎么去调试这个?

非常感谢任何帮助或见解。提前谢谢。

1 个答案:

答案 0 :(得分:3)

允许的标题/方法/ ...列表必须用逗号分隔,而不是用空格分隔:

Access-Control-Allow-Headers: X-File-Upload, content-type
Access-Control-Allow-Methods: POST, OPTIONS

尽管您当前的用例可能没有问题,但您还应该查看以下两个标题:

Access-Control-Allow-Credentials:true
Access-Control-Allow-Origin:*

删除Access-Control-Allow-Credentials: true或设置非通配符Access-Control-Allow-Origin响应标头(例如http://example.com),因为在使用通配符源时无法共享凭据。 "The string "*" cannot be used for a resource that supports credentials."