Skip to content

Commit 05d548b

Browse files
authored
fix: postMessage to target origin in redirect page (#362)
* fix: postMessage to target origin in redirect page * referer is not work
1 parent efe6e10 commit 05d548b

File tree

2 files changed

+30
-13
lines changed

2 files changed

+30
-13
lines changed

docs/customize-redirect-uri.md

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -22,25 +22,27 @@ Or
2222

2323
But in your redirect page, you need to add following code to pass callback params to this app.
2424

25-
```js
25+
```html
2626
<script>
27+
// the origin is used for postMessage
28+
var origin = 'https://ringcentral.github.io';
2729
if (window.opener) {
2830
// For normal popup login window
2931
window.opener.postMessage({
3032
callbackUri: window.location.href,
31-
}, '*');
33+
}, origin);
3234
}
3335
if (window.parent && window.parent !== window) {
3436
if (window.name === 'SSOIframe') {
3537
// SSO login iframe
3638
window.parent.postMessage({
3739
callbackUri,
38-
}, '*');
40+
}, origin);
3941
} else {
4042
// For hidden token refresh iframe
4143
window.parent.postMessage({
4244
refreshCallbackUri: callbackUri,
43-
}, '*');
45+
},origin);
4446
}
4547
}
4648
</script>

src/lib/RedirectController.js

Lines changed: 24 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,14 @@
11
import url from 'url';
22

3+
const origins = [
4+
'https://ringcentral.github.io',
5+
'https://apps.ringcentral.com',
6+
];
7+
8+
if (origins.indexOf(window.location.origin) < 0) {
9+
origins.push(window.location.origin);
10+
}
11+
312
export default class RedirectController {
413
constructor({
514
prefix,
@@ -20,9 +29,11 @@ export default class RedirectController {
2029

2130
try {
2231
if (window.opener && window.opener.postMessage) {
23-
window.opener.postMessage({
24-
callbackUri
25-
}, '*');
32+
origins.forEach((origin) => {
33+
window.opener.postMessage({
34+
callbackUri
35+
}, origin);
36+
});
2637
window.close();
2738
}
2839
} catch (e) {
@@ -33,14 +44,18 @@ export default class RedirectController {
3344
if (window.parent && window.parent !== window) {
3445
if (window.name === 'SSOIframe') {
3546
// SSO iframe
36-
window.parent.postMessage({
37-
callbackUri,
38-
}, '*');
47+
origins.forEach((origin) => {
48+
window.parent.postMessage({
49+
callbackUri,
50+
}, origin);
51+
});
3952
} else {
4053
// Hidden refresh iframe
41-
window.parent.postMessage({
42-
refreshCallbackUri: callbackUri,
43-
}, '*');
54+
origins.forEach((origin) => {
55+
window.parent.postMessage({
56+
refreshCallbackUri: callbackUri,
57+
}, origin);
58+
});
4459
}
4560
}
4661
} catch (e) {

0 commit comments

Comments
 (0)