【发布时间】:2015-06-20 23:02:57
【问题描述】:
这是一个我无法弄清楚的奇怪情况。
我正在我的网站上发出一个跨域 AJAX 请求,从它的 http 域到它的 https 域。我正在通过两个不同页面上的按钮执行此操作。在一页上,请求工作正常,我可以从 Firebug 看到我的会话 cookie 已正确发送到服务器。在另一个页面上 - 在相同的域和 URL 结构下 - 没有发送任何 cookie。
例如工作于http://www.example.com/en/apples
但不适用于http://www.example.com/en/oranges
代码如下:
var ajaxUrl = "https://www.example.com/en/controller/add/bananas/";
jQuery.ajax({
type: "GET",
url: ajaxUrl,
xhrFields: {
withCredentials: true
},
crossDomain: true,
success: function(data) {
console.log("Yay");
}
}
);
我的https 网站回复:
Header add Access-Control-Allow-Origin "http://www.example.com"
Header add Access-Control-Allow-Credentials "true"
我知道它有效,因为它适用于/apples,但完全相同的代码不适用于/oranges!这是怎么回事?
【问题讨论】:
-
您不能从
http页面发出https请求。我什至怀疑你的第一个案例是如何运作的 -
有一些方法可以让 http ajax 调用 https 页面。首先,您确定
/apples和/oranges的原始标头相同吗?请用 Chrome 或 FF 进行检查。 -
@Drakes 标题肯定都是一样的,除了
Referer与您期望的不同。并且/oranges页面没有在请求中发送Cookie标头(这是问题所在)。
标签: javascript php jquery ajax cookies