使用xhrFields时状态代码= 0:{具有凭据:使用Firefox调用jQuery $ AJAX 时出现true }

rhfm7lfc  于 2023-03-17  发布在  jQuery
关注(0)|答案(2)|浏览(62)

我在用

xhrFields : { 
  withCredentials: true 
}

在jQuery $ AJAX 调用中,以便在我的查询中发送会话cookie。
调用在我的apache日志中给出了正确的状态代码(401/200,取决于是否设置了cookie),但Firefox总是收到status=0(即$. AJAX ()中的错误)。如果我删除了这个xhrFields部分,状态代码是OK(但cookie不会发送)
下面是我在Firefox中使用xhrFields设置时收到的响应对象:

{"readyState":0,"responseText":"","status":0,"statusText":"error"}

我的Apache配置支持CORS,并且还允许访问控制允许凭据(下面是相应的HTTP头)

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

在 AJAX 调用中或者在Web服务器配置中是否缺少了一些东西?
NB:这在Chrome中运行得非常好

pgky5nke

pgky5nke1#

您可能需要比 * 更明确地指定Access-Control-Allow-Origin标头。
https://developer.mozilla.org/En/HTTP_access_control#Requests_with_credentials :

**重要说明:**响应凭据请求时,服务器必须指定域,并且不能使用通配符。

omjgkv6w

omjgkv6w2#

在Web应用程序中,如果您使用withCredientials=true,则在CORS设置下需要确保几件事,因为您正在请求服务器在脚本中显示响应标头,如状态、Cookie等。
1.您只返回一个有效的来源,即域值到名为“access-control-allow-origin”的头,响应如下:
访问控制允许来源:{具有协议和端口(如果有)的域}
例如,访问控制允许来源:网址:

访问控制允许来源:https://example.com
1.确保在响应中将另一个名为“access-control-allow-credentials”的标头设置为true,如下所示:
访问控制允许凭据:真
这将使您能够访问响应头,如状态和身份验证头等。

相关问题