javascript - Jquery ajax 调用返回 URL 并加载到框架或 div
问题描述
我有一个客户端 web 应用程序,它都是静态的 html 和 javascript,我使用 JQuery。我更像是 Spring 的后端/中间件人,所以我不太擅长前端的东西。
我有一个从客户端 UI 到用 Spring 作为控制器编写的中间件 Web 应用程序的 RESTful API。我可以成功调用它,并且有中间件业务逻辑,我可以在其中使用第三方 API 并返回 HTML。我将此 HTML 返回给我的客户端,并尝试将其加载到 iframe 或 div 标记中。当然,我遇到了各种 javascript 错误和很多 CORS 问题。因此,如果这不是从另一个网站获取 HTML 并将其部署到我的页面上的可行选项,那么我愿意放弃它。
我在我的后端创建了另一个 RESTful API,现在它只返回这个第三方 RESTful API 的 URL。具体来说,我正在调用 Coinbase 的授权页面,但它很容易成为任何其他第三方授权页面。我有他们推荐的完整 URL,我准备用它做点什么。
所以,我得到一个这样的 URL(dataType 是'text'),我可以看到它并发出警报:
https://www.coinbase.com/oauth/authorize?
response_type=code&client_id=MY_CLIENT_ID
&redirect_uri=MY_REDIRECT_URL
&state=SECURE_RANDOM
&scope=wallet:accounts:read
我想我会做如下重定向:
window.location.replace(response);
但是,会发生什么是我得到一个 HTTP 404,因为我的系统正在将我的 UI 本地主机预先挂在该 URL 上。所以,它看起来像:
http://localhost:8080/my_web_ui_app/https://www.coinbase.com/oauth/authorize?
response_type=code&client_id=MY_CLIENT_ID
&redirect_uri=MY_REDIRECT_URL
&state=SECURE_RANDOM
&scope=wallet:accounts:read
显然,这不会起作用,因为我收到了 HTTP 404 错误。
还有什么我应该尝试的吗?就像我说的,我不是一个好的 UI 人,但我只需要一些可以正常工作的东西。
谢谢!
解决方案
这是 Ajax 调用本身。
$.ajax({
url : 'http://localhost:8080/myapp-be/api/myrestapi/authorize',
headers : {'token' : token},
dataType: 'text',
cache: false,
success: function(response) {
console.log(response)
$(location).attr('href',response);
}
});
dataType: 'text' 是罪魁祸首。
URL 是响应,作为“文本”,它在响应周围添加了另一层引号。
一旦我从 Ajax 调用中删除了 dataType,那么默认的 dataType 就起作用了,我不再得到带有额外引号的 URL。成功后,我可以做一个简单的重定向,而且效果很好。是一个简单的修复。
谢天谢地 Chrome 和调试工具,所以我可以看到返回的响应有额外的引号。
推荐阅读
- php - 如何将 MySQL 菜单项表转换为用于网站导航的递归 PHP div
- mfc - 使用 Visual Studio 将项目从 32 位转换为 64 位时,是否必须将 int(索引变量)更改为 INT_PTR 或 size_t?
- reactjs - 如何在 reactjs(16.13.0) 代码中为自定义材质 ui 组件执行正确的重定向?
- input - MRTK 和握压机
- php - PHP 元页面说明
- docker - 每N次上传一次上传Docker镜像GCP?
- php - 在php中转换数组数组的顺序
- java - 我应该如何在员工维护系统中实现 LeaveHistory
- java - 是否可以将枚举值作为 Java 中的私有静态最终常量?
- php - 检查密码是否与用户名在同一行中匹配