Javascript Chrome没有在来自iframe的ajax请求中添加头,Firefox ok

Javascript Chrome没有在来自iframe的ajax请求中添加头,Firefox ok,javascript,google-chrome,firefox,iframe,xmlhttprequest,Javascript,Google Chrome,Firefox,Iframe,Xmlhttprequest,在这种情况下,我将ajax请求从iframe发送到与原始页面相同的域,该iframe从同一域加载。比如,原始页面地址为,iframe src为 从Iframe开始,我向api:POST发出初始xhr请求,它返回201,在响应头中包含令牌和cookie。 现在,我对不同的api方法进行下一次调用,比如GET,但在本例中,我添加了令牌头,并且我假设收到的cookie将由浏览器包含-它是HttpOnly,我的xhr具有withCredentials:true 神奇的是:在FF中,它工作正常,令牌和co

在这种情况下,我将ajax请求从iframe发送到与原始页面相同的域,该iframe从同一域加载。比如,原始页面地址为,iframe src为

从Iframe开始,我向api:POST发出初始xhr请求,它返回201,在响应头中包含令牌和cookie。 现在,我对不同的api方法进行下一次调用,比如GET,但在本例中,我添加了令牌头,并且我假设收到的cookie将由浏览器包含-它是HttpOnly,我的xhr具有withCredentials:true

神奇的是:在FF中,它工作正常,令牌和cookie都被设置和发送,在chrome中,令牌头不被添加,cookie不被发送。我已经验证了在这两种情况下都调用了xhr.setRequestHeader(…),并且100%确定我已经用wireshark验证了实际发送的内容

你知道为什么chrome和FF的表现不同吗?也许我错过了一些简单的东西

谢谢,
Łukasz

我遇到了与您类似的问题,在这篇MDN文章之后,我能够解决我的CORS问题,请参阅有关使用凭据的请求的部分。在那里,您将发现必须使用凭据设置xhr选项
。以下是他们使用的示例:

var invocation = new XMLHttpRequest();
var url = 'http://bar.other/resources/credentialed-content/';

function callOtherDomain(){
  if(invocation) {
    invocation.open('GET', url, true);
    invocation.withCredentials = true;
    invocation.onreadystatechange = handler; // Needs to be implemented
    invocation.send(); 
  }
}

希望有帮助

有没有发现这个问题?嗨,事实上没有,但现在我又遇到了这个问题,结果是,它在我的电脑上仍然不能正常工作,但在另外两台电脑上(相同的chrome版本)chrome也能正常工作。。。所以仍然没有线索,但可能不是chrome的问题。嗨,谢谢你的建议,但不是那样(仔细检查标志是否设置)。再说一次,我的电脑上只有chrome,因为FF正常,其他电脑上的chrome也正常。