我的代码执行一个GET请求,完成后then()
执行一个附加请求(后)。
这是代码
let app = angular.module('myApp', []);
app.controller('controller', function ($scope, $http) {
$http.get("http://localhost:8006/one.php", { withCredentials: true })
// I can see in the browser inspector the Set-Cookie response header
.then(function (response) {
$scope.myWelcome = response.data;
// Before this POST is made, a pre-flight OPTIONS is made. No "Cookie" header is sent with this, and a new Set-Cookie is received
$http.post("http://localhost:8006/two.php", { withCredentials: true })
// This POST doesn't include Cookie headers either, and the response sends yet another Set-Cookie header.
.then(function (anotherResponse) {
console.log(anotherResponse.data);
})
});
});
这导致向服务器发出三个请求。 (第一个GET
,一个OPTIONS
飞行前请求,最后一个POST
)。
我看到在每个上,我都得到了一个不同 Set-Cookie
标头。 (由于它是一个会话cookie,因此始终用于同一cookie,如果浏览器已根据请求发送了cookie,则不会发送该cookie。)
例如:
Set-Cookie PHPSESSID=526tl5rbilqjosn74kf07a7a9r; path=/
我想说的是,在第一个get()
调用之后,在then()
方法上发出的请求将包含Cookie
标头,但没有。
如果我重新加载页面,那么将使用第一个请求(GET
一个)的值来设置cookie,但是我需要在第一个GET之后的调用上发送该cookie。发生在then()
。
浏览器网络检查器中发生的三个请求:
这是第一个GET请求:
这是OPTIONS飞行前的请求:
这是最后一个POST请求:
如您所见,我在每个请求中得到Set-Cookie
,而在任何请求上都没有发送Cookie
标头。重新加载后,Cookie
标头将正常发送。