我在端口4443
上运行HTTPS服务器并使用端口转发来发送443
- > 4443
所以在浏览器中你无法告诉
在我的OAuth设置中,当我使用https://www.domain.com:4443/callback
时,我收到了回复,但在弹出窗口中,它无法访问父级,我收到此Chrome错误
Blocked a frame with origin "https://www.domain.com:4443" from accessing a
frame with origin "https://www.domain.com". Protocols, domains, and ports must match.
当我将OAuth中的网址更改为443时,我得到了心爱的
`Invalid redirect_uri. This value must match a URL registered with the API Key.`
我能想到的唯一方法是通过javascript检查端口是否为url,如果是,则重定向到没有端口的url。
还有更优雅的解决方案吗?
答案 0 :(得分:0)
由于没有人提出优雅的解决方案,我认为我的Javascript重定向答案。
我所做的是,在接受重定向的窗口内,其URL看起来像https://www.domain.com:4443/callback?aribtrary_data=1231252...etc...
我将回调代码包装在try语句中。如果失败,我将当前页面重定向到相同的URL减去端口号。
这是我的Jade弹出窗口解决方案,试图在完成时调用父窗口。
doctype html
html
head
title Authentication Popup
script.
var service = !{JSON.stringify(service)},
callback = 'on' + service.name + 'Auth';
window.onload = function () {
try {
window.opener[callback](service.error, service);
window.close();
} catch (e) {
window.location = window.location.href.replace(/(\.com)(:\d{3,4})?/, '$1');
}
}
body
| Closing in 1...