跨域jQuery ajax带有凭据



我遵循以下步骤:

  1. 获取服务器允许跨域调用(所有标题和内容)
  2. 用某些跨域调用测试服务器
  3. 让服务器强制证书
  4. 使用浏览器转到服务器上的文件,选择正确的证书,然后查看文件仍然有效
    现在我们到达了不错的部分
  5. 将跨域调用与证书< - 这不起作用

问题

我正在从浏览器中获取证书请求,但是当我在使用浏览器时选择与我相同的证书时,拨打了呼叫,但我会被禁止使用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: trueAccess-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的文章更长的存在)

希望这个帮助..

相关内容

  • 没有找到相关文章

最新更新