我遵循以下步骤:
- 获取服务器允许跨域调用(所有标题和内容)
- 用某些跨域调用测试服务器
- 让服务器强制证书
- 使用浏览器转到服务器上的文件,选择正确的证书,然后查看文件仍然有效
现在我们到达了不错的部分 - 将跨域调用与证书< - 这不起作用
问题
我正在从浏览器中获取证书请求,但是当我在使用浏览器时选择与我相同的证书时,拨打了呼叫,但我会被禁止使用403。
代码
$.ajax({
type: "POST",
xhrFields: {withCredentials: true},
dataType: "xml",
contentType: "text/xml; charset="utf-8"",
url: "https://www.myOtherServer.com/testfile.asp",
});
有什么想法?
编辑
正确配置了Access-Control-Allow-Credentials: true
和Access-Control-Allow-Origin
。
其他信息
我开始认为这与内容类型有关。当我将其更改为"text/html"
时,我会收到415
错误,但是我确实需要发送XML,因为它是SOAP服务器。
响应标头
Access-Control-Allow-Cred... true
Access-Control-Allow-Head... Content-Type, Origin, Man, Messagetype, Soapaction, X-Test-Header
Access-Control-Allow-Meth... GET,POST,HEAD,DELETE,PUT,OPTIONS
Access-Control-Allow-Orig... https://www.mywebsite.com
Access-Control-Max-Age 1800
Cache-Control private
Content-Length 5561
Content-Type text/html; charset=utf-8
Date Wed, 19 Dec 2012 15:06:46 GMT
Server Microsoft-IIS/7.5
X-Powered-By ASP.NET
请求标头
Accept text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Encoding gzip, deflate
Accept-Language nl,en-us;q=0.7,en;q=0.3
Access-Control-Request-He... content-type
Access-Control-Request-Me... POST
Cache-Control no-cache
Connection keep-alive
Host myhoast.com
Origin https://www.mywebsite.com
Pragma no-cache
User-Agent Mozilla/5.0 (Windows NT 6.1; WOW64; rv:17.0) Gecko/20100101 Firefox/17.0
我最好的猜测是,这不是您的JavaScript的问题,而是您的CORS配置。您是否使用Access-Control-Allow-Credentials: true
标头设置了服务器?http://www.w3.org/tr/cors/#access-control-allow-credentials-response-header
还要注意,即使设置了允许限制标头,浏览器也不允许凭证,如果Access-Control-Allow-Origin
为 *,则根据这些文档:https://developer.mozilla.org/en-us/docs/http/access_control_cors?redirectlocale = en-us& redirectslug = http_access_control#requests_with_credentials。
编辑:由于OP具有正确设置CORS标头,因此问题似乎是服务器正在拒绝使用403状态代码的选项请求。在某些跨域请求(例如带有应用程序/XML内容类型的帖子)之前,发送选项请求(称为"前乘请求"),以允许服务器通知浏览器允许哪些类型的请求。由于浏览器没有看到它从选项请求中期望的200个响应,因此不会启动实际的邮政请求。
基本上我们只需要在htaccess
上写下Header set Access-Control-Allow-Origin “*”
但是,当我们需要cookie等时,我们必须在您的ajax代码和htaccess上添加脚本
我在我的博客上写下有关跨域xhr的文章更长的存在)
希望这个帮助..