0

我正在 ASP.NET MVC 5 中尝试基于令牌的身份验证。一切都在 PC 浏览器上运行(登录页面、注册页面、数据页面)。

这是登录脚本代码

<script type="text/javascript">
$(document).ready(function () {
    $('#btnSignIn').click(function () {
        var loginData = {
            grant_type: 'password',
            username: $('#txtSignInEmail').val(),
            password: $('#txtSignInPassword').val()
        };

        $.ajax({
            type: 'POST',
            url: 'Token',
            data: loginData
        }).done(function (data) {

            $('#user').text(data.userName)
            $('#UserName').text(JSON.stringify(data.userName));

            localStorage.setItem('accessToken', data.access_token);
            localStorage.setItem('qubaUserName', JSON.stringify(data.userName));
        }).fail(function (showError) {
            $('#signInError').text(JSON.stringify(showError));
        });
    });
})
</script>

当我尝试在我的电脑上登录时,它成功登录。

但是在我的手机上,它显示了一个错误,如屏幕截图所示。

更新

它仅适用于移动 Chrome 浏览器。我检查了 Mozilla,它完全符合我的期望

移动 Chrome 错误

更新

如果我制作url:'Token',它可以在 Android 中的本地机器和 Mozilla 浏览器上运行,但不能在任何其他 PC(chrome 和 Mozilla)和 Android(chrome 浏览器)上运行

当 URL:'令牌'

它从本地电脑向此链接发出请求http://localhost/ProjectName/Token

但它会从其他 PC 浏览器和 Android Chrome 浏览器发出请求,例如http://localhost/Token

如果我更改URL:'ProjectName/Token'不在本地电脑上工作(我在 IIS 上部署的位置),但是,它可以在所有 Android 浏览器(chrome 和 Mozilla)和其他电脑上工作

当 URL:'ProjectName/Token'

它从本地电脑向此链接发出请求http://localhost/ProjectName/ProjectName/Token

但它会从其他 PC 浏览器和 Android Chrome 浏览器发出请求,例如http://localhost/ProjectName/Token

那么如何为所有客户端(本地电脑和远程客户端)创建通用 URL

4

2 回答 2

1

将 url 更改为/以 开头的绝对 URL。

"/ProjectName/Token"

http://localhost/ProjectName/Token无论从哪个 url 调用您的 js 脚本,它肯定会指向。

于 2019-03-06T18:29:03.830 回答
0

$.ajax({ type: 'POST', url: 'Token',

将此 url 令牌更改为 /token 或完全限定路径

于 2019-03-04T16:38:00.587 回答