获取请求访问其他网站的网站域名
Get the domain of the website requesting to access another website
我有 2 个不同的网站需要整合。我们将它们命名为 Web1 和 Web2。
我想在允许访问 Web2 之前验证请求的 Web1 是否确实是 Web1。
Request.Url.Host只会获取当前网站的域名。
我需要的是在 Web2 C# 代码中验证 Web1 的域。
目前,这就是我从 Web1 调用 Web2 的方式。
$("#btn").click(function() (
window.location.href = "http:\Web2.com\Test"
)}
谢谢
URL referrer 和 Origin header 可以被欺骗。所以不靠谱。
我认为能够接近可靠解决方案的唯一方法是添加服务器到服务器通信以执行两个应用程序之间的切换。
所以在你的点击事件中,会发生这些事情:
- 浏览器向 Web1 发出 AJAX 调用以请求 URL 到 Web2
- Web1 向 Web2 发出 HTTP 调用(从服务器)
- Web2 returns 唯一的 URL(例如,http:\\Web2.com\FromWeb147983659(或者可能带有 GUID,无论您想要什么)
- Web1 returns 浏览器的唯一 URL
- 浏览器将用户重定向到唯一 URL
- Web2 验证使用的 URL 是它生成的,因此知道用户来自 Web1
您仍然需要在第 2 步中进行一些身份验证,以便 Web2 知道它是 Web1 进行调用,但至少该身份验证不会暴露给浏览器。
我有 2 个不同的网站需要整合。我们将它们命名为 Web1 和 Web2。 我想在允许访问 Web2 之前验证请求的 Web1 是否确实是 Web1。
Request.Url.Host只会获取当前网站的域名。 我需要的是在 Web2 C# 代码中验证 Web1 的域。
目前,这就是我从 Web1 调用 Web2 的方式。
$("#btn").click(function() (
window.location.href = "http:\Web2.com\Test"
)}
谢谢
URL referrer 和 Origin header 可以被欺骗。所以不靠谱。
我认为能够接近可靠解决方案的唯一方法是添加服务器到服务器通信以执行两个应用程序之间的切换。
所以在你的点击事件中,会发生这些事情:
- 浏览器向 Web1 发出 AJAX 调用以请求 URL 到 Web2
- Web1 向 Web2 发出 HTTP 调用(从服务器)
- Web2 returns 唯一的 URL(例如,http:\\Web2.com\FromWeb147983659(或者可能带有 GUID,无论您想要什么)
- Web1 returns 浏览器的唯一 URL
- 浏览器将用户重定向到唯一 URL
- Web2 验证使用的 URL 是它生成的,因此知道用户来自 Web1
您仍然需要在第 2 步中进行一些身份验证,以便 Web2 知道它是 Web1 进行调用,但至少该身份验证不会暴露给浏览器。