gpt4 book ai didi

jquery - 使用 jQuery 进行跨域基本身份验证

转载 作者:行者123 更新时间:2023-12-01 05:09:00 25 4
gpt4 key购买 nike

这是我的问题:我正在开发一个可以轮询以检索动态数据的系统。它在 Grails 中,当我对某个 Controller 操作发出请求(例如“http://localhost:8080/foo/bar”)时,会返回一个包含最新数据的 JSON 列表。

为了增加安全性和功能,我使用 Spring Security(Grails Acegi 插件)保护我的页面,并启用了基本身份验证。当您登录时,系统会自动加载有关您的用户配置文件的信息,并更改返回的数据。因此,身份验证是强制性的。

这有效:我可以从任何浏览器轮询我的操作,并且数据将被返回。我的 Grails 应用程序中有一个调用此 URL 的 JavaScript 脚本。

问题是我想将我的 JavaScript 脚本外部化以将其分发给客户,以便他们可以构建自己的 HTML 文件,插入我的 JavaScript 文件,并能够访问我的数据(有点像 API)使用 AJAX。就像这样:

$.ajax(url: urlWithParams, 
method: 'GET',
beforeLoad: function(xhr) {
xhr.setRequestHeader('Authorization', authString);
},
success: myFunction
});

但是,它不起作用。首先,我知道跨域 GET 请求很棘手。但就我而言,我使用基本身份验证,这比较棘手,因为我需要将凭据直接放入 XmlHttpRequest 中,这会在 Firefox 中生成预检请求(用 OPTIONS 替换 GET),而我的 Grails 应用程序不处理它.

我的问题非常具体。我使用基本身份验证来防止恶意访问,但是由于一些跨域限制,我无法使用正确的凭据访问我的应用程序!

我该怎么办!我尝试使用 IFrame,但无法获取页面内容(我收到“访问被拒绝”错误 - 再次出现跨域限制)。

此外,ajax() 函数中的 jQuery 用户名和密码字段不起作用。

我可以在未 protected 页面上执行简单的 AJAX GET 请求,发送凭据作为参数,然后该页面将使用凭据重定向到 protected 页面吗?浏览器不会破坏请求,但我可以使用基本身份验证凭据进行重定向吗?

我有一种感觉,它不会工作(与重定向有关,它会生成一个新请求,等等......)。我是对的,还是应该有效?

JSONP 可以解决这个问题吗?但是,我不知道如何使用 JSONP 集成基本身份验证...

非常感谢!

最佳答案

我使用 JSONP 解决了我的问题。我修改了我的应用程序,以便 AJAX 调用不需要基本身份验证。 jQuery 中的 $.getJSON() 方法成功了。

关于jquery - 使用 jQuery 进行跨域基本身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3393489/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com