我有这个webapp,我使用域A中的Ajax到域B上的休息服务发出请求 域B已设置为使用CORS Access-Control *标头提供响应,以使跨域发布工作
来自域B的回复标题:
Access-Control-Allow-Credentials: true
Access-Control-Allow-Headers: content-type
Access-Control-Allow-Methods: POST GET OPTIONS
Access-Control-Allow-Origin: https://sub.domain-a.com
Access-Control-Max-Age: 180
Ajax代码
$.ajax({
url: 'https://sub.domain-b.com',
type: 'POST',
contentType: 'application/json',
headers: {
'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8'
},
data: json,
dataType: 'json',
xhrFields: {
withCredentials: true
},
success: function (data) {
},
error: function (jqXHR, textStatus, errorThrown) {
}
});
我登录了两个域,我的请求发送了必要的cookie(withCredentials = true),但我仍然从响应中获得403 Forbidden
两个域都使用SSL证书
我开始怀疑SSL是否导致问题,因为之前有效,而我的日志中没有任何内容
这里有没有人有类似的经历? 有什么指针吗?
答案 0 :(得分:0)
可能与此问题类似: Pre-flight OPTIONS request failing over HTTPS
通常情况下,问题是使用SSL和预检请求,虽然您不会返回403,但您只是让OPTIONS请求中止。
该服务如何进行身份验证和授权?您使用的是自签名证书吗?听起来你认为SSL导致问题是正确的,如果没有更多信息,很难说出你的具体问题是什么。