Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/364.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 具有凭据的跨域jQuery ajax调用_Javascript_Jquery_Certificate_Cross Domain - Fatal编程技术网

Javascript 具有凭据的跨域jQuery ajax调用

Javascript 具有凭据的跨域jQuery ajax调用,javascript,jquery,certificate,cross-domain,Javascript,Jquery,Certificate,Cross Domain,我遵循了以下步骤: 让服务器允许跨域调用(包含所有的头和内容),这是可行的 使用一些跨域调用来测试服务器这是可行的 让服务器强制证书生效 使用浏览器转到服务器上的文件,选择正确的证书,然后查看该文件是否仍然有效 现在我们进入精彩部分 将跨域调用与证书结合起来,我最好的猜测是这不是Javascript的问题,而是CORS配置的问题。您是否使用访问控制允许凭据:true标题设置服务器 另请注意,根据以下文档,即使设置了allow credentials标头,如果Access Control allo

我遵循了以下步骤:

  • 让服务器允许跨域调用(包含所有的头和内容),这是可行的
  • 使用一些跨域调用来测试服务器这是可行的
  • 让服务器强制证书生效
  • 使用浏览器转到服务器上的文件,选择正确的证书,然后查看该文件是否仍然有效
    现在我们进入精彩部分

  • 将跨域调用与证书结合起来,我最好的猜测是这不是Javascript的问题,而是CORS配置的问题。您是否使用
    访问控制允许凭据:true
    标题设置服务器

    另请注意,根据以下文档,即使设置了allow credentials标头,如果
    Access Control allow Origin
    为*,浏览器也不允许响应已认证的请求:


    编辑:由于OP正确设置了CORS头,问题似乎是服务器拒绝了带有403状态代码的选项请求。选项请求(称为“飞行前请求”)在某些跨域请求(例如具有应用程序/xml内容类型的帖子)之前发送,以允许服务器通知浏览器允许哪些类型的请求。由于浏览器没有看到它期望从选项请求中得到的200响应,因此它不会触发实际的POST请求。

    基本上,我们只需在htaccess上写入即可

    Header set Access-Control-Allow-Origin “*”
    
    但当我们需要cookie等时,我们必须在ajax代码和htaccess上添加脚本

    我在我的博客blog.imammubin.com/cross-domain-XHR/2014/05/28/(编辑:网站不再存在)上写了关于跨域XHR的文章


    希望这有帮助。

    我编辑了我的问题,这些标题是正确的。还有其他想法吗?嗯。你能把你在请求和响应上看到的实际标题贴出来吗?(您可以在Chrome开发工具中看到这些)您应该看到一个选项请求,其响应包含
    访问控制允许来源:http://yourdomain.com
    访问控制允许方法:POST、选项和
    访问控制允许凭据:true
    。当您更改内容类型时,它会变成一个简单的(非预装)请求,因此服务器可能无法正确响应选项请求?我在问题中添加了请求和响应标题,目前正在查看选项请求,感谢您为我指明了这个方向。我发现选项请求问题的奇怪之处在于,我得到了一个403禁止而不是405不允许的方法(如果您不能执行选项请求,您可能会想到这一点)未来读者注意:OP没有指定使用哪种服务器后端,但是一些消息来源说Tomcat有一个默认的选项处理程序,如果您不手动重写它,它将返回403。注意!
    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
    
    Header set Access-Control-Allow-Origin “*”