Ich habe ein Problem für nicht in der Lage Cookie im Cross-Domain-Szenario gesetzt werden.CORS Set Cookie funktioniert nicht
Zunächst einmal möchte ich beschreiben, wie Sie mein Szenario war. Grundsätzlich habe ich 3 Client-Plattform, die Web, iOS, Android sind. Diese 3 Plattformen würden mit meinen Backend-Endpunkten kommunizieren.
Für diese Frage bezieht sich nur auf Web und Backend. Web und Backend befinden sich in einer anderen Domäne.
Mein Web (React JS) würde als http://webdomain1.com hosten. Mein Auth Endpunkt (Frühjahr Boot-Anwendung) würde als http://backenddomain1.com Host und Listening-Port 8080
Ich bin mit Chrom http://webdomain1.com durchsuchen und versuchen, die Authentifizierung Benutzername und Passwort über Ajax http://backenddomain1.com und Backend Web würde ausgeben Token zu senden. Die Antwort würde "Set-Cookie" antworten und das Token in Cookie setzen. Ich sehe jedoch nicht, dass der Cookie in http://webdomain1.com gesetzt wird, indem er von Chrome-Entwicklertools untersucht wird.
Hier ist meine Ajax-Code:
axios({
method:'post',
url: 'http://backenddomain1.com/auth/rentilife/authenticate',
data: this.loginModel,
withCredentials: true,
headers: {'X-Requested-With': 'XMLHttpRequest'}
}).then((response) => {
document.cookie="test=value";
}).catch(function (error) {
//console.log(error);
});
Und unter meinem Backend-Code:
@Configuration
@EnableWebMvc
public class WebConfiguration extends WebMvcConfigurerAdapter{
@Value("${allowed.origin.domains}")
private String[] allowedOriginDomains;
@Override
public void addCorsMappings(CorsRegistry registry) {
registry.addMapping("/**")
.allowCredentials(true)
.allowedHeaders("*")
.allowedMethods("*")
.allowedOrigins(allowedOriginDomains);
}
}
Und die Antwort-Header wie folgt:
Access-Control-Allow-Credentials:true
Access-Control-Allow-Origin:http://webdomain1.com
Content-Type:application/json;charset=UTF-8
Date:Mon, 01 May 2017 11:34:17 GMT
Set-Cookie:XA=eyJhbGciOiJSUzI1NiJ9.eyJzdWIiOiJhMWN8Y2h1YW5ob3I4NUBnbWFpbC5jb20iLCJpc3MiOiJnYWdlc2lzLmNvbSIsImV4cCI6MTQ5MzY0MjA1OCwiaWF0IjoxNDkzNjM4NDU4LCJ1c2VybmFtZSI6aGAZ21haWwuY29tIn0.OGVpymzgOzoLhjdhJS6OMbYnCB1NhwfVxCP7E8dxSahKYZvE5lZBrMBN5xgylOZoOWLHRB0C28j2Ps6zO1s7KF_KuNI6lPn1hU2oCjGZkp4X2HGj1rPBhmB7jy5oXpBB0GZDu8HV5u-HeVh2HfDH1KaCw-pJdPH66y0e6ugJghR36StqfrphTu1ideSjsWgN7BTpVip_uVP8aDKjVLZsQjnntlVLqrrEt0wutn10xXDs5d_pULi3wn0s18IPQFWA9iiC0d8s5hNk-AdVKmMhD9wQrczxYoPO5WqKIf5SFFKHa7bYJPUNJ6mSw6zshS1Bnj1cn_joJ8wo9mKQr05Lhw;domain=webdomain1.com;path=/
Transfer-Encoding:chunked
Vary:Origin
X-Application-Context:gateway:8080
Request-Header:
Accept:application/json, text/plain, */*
Accept-Encoding:gzip, deflate
Accept-Language:en-GB,en;q=0.8,en-US;q=0.6,la;q=0.4
Connection:keep-alive
Content-Length:57
Content-Type:application/json;charset=UTF-8
Host:backenddomain1.com:8080
Origin:http://webdomain1.com
Referer:http://webdomain1.com/
User-Agent:Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2987.133 Safari/537.36
X-Requested-With:XMLHttpRequest
Ich suche nach Führung. Schätze, wenn jemand helfen könnte.
Session-Cookies (was ich denke, Sie versuchen zu tun) werden nur auf der gleichen Domain verwendet. Was Sie beschreiben, ist mehr mit dem Bearer-Token-Weg verbunden, Dinge zu tun. Schaut euch https://oauth.net/2/ –