javascript - 使用纯 Javascript 或 Jquery 处理向外部网站请求时发生的 404 错误

标签 javascript jquery

我的应用程序中有一个指向外部网站的 anchor 标记。

说; “>常规搜索<>”。点击此链接的用户将被带到谷歌主页。我的应用程序的几个页面中有这些类型的链接。全部指向外部网站。用户是实际输入 href 的人,我们用它动态创建链接,并且我们不提供任何验证来检查 url 是否有效。

说; 如果用户输入“somebadtextnotavalidurl”应用程序将生成一个类似于“<>somebadtextnotavalidurl<>”的链接,单击该链接将给出 404 错误。

我的要求是我需要使用javascript处理我页面中的这个链接点击;如果它是有效的 url,则应为 url 页面打开一个新选项卡并显示内容,否则,如果它是 404,则还应打开一个新选项卡,但我需要自己的浏览器显示的默认 404 错误页面而不是应显示样式和格式的页面。

最佳答案

简短回答:这确实不可能。

长答案:你基本上有两个选择,都不好。

1) 您不需要使用用户输入的实际 URL,而是需要在该 URL 前添加在您的域上运行的服务器端“处理程序”或“代理”前缀,该服务器将目标 URL 作为参数。假设它的名称为 UrlForwarder.aspx。那么您的链接将指向 /UrlForwarder.aspx?url=<actual url> 。单击时,UrlForwarder.aspx 会从查询字符串中读取 URL,并尝试使用某种 HttpClient 来打开它。然后根据响应 header (404、200)将用户重定向到实际 URL 或您自定义的 404 页面。

2) 仅客户端解决方案是在文档加载时将事件处理程序附加到所有链接。然后,该事件处理程序将对 URL 执行 ajax 请求,检查响应 header ,如果一切正常,则将用户重定向到该 url。否则,重定向到您的自定义 404 页面。此方法有一个很大的警告,即同源策略(javascript 基本上无法加载来自其他域的文档),这意味着您的 javascript 不允许加载外部网站。在这里查看更多:AJAX cross domain call

不过,大多数浏览器中都可以通过配置设置来规避这一点。

关于javascript - 使用纯 Javascript 或 Jquery 处理向外部网站请求时发生的 404 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26212918/

相关文章:

jquery - 在 HTML 网页中使用网络摄像头录制视频和音频

javascript - 如何在 Datatable 的单元格内显示有关图标单击事件的对话框?

javascript - 如何在 Javascript 中重置电子邮件输入类型选择器?

javascript - HTMLElement.id 在 Internet Explorer 8 中不能正常工作

php - 我的 index.php 中的未知脚本产生恶意软件,我被黑了吗?

javascript - Jquery UI Slider 焦点问题

javascript - JS中类型错误的可能原因是什么?

javascript - 我怎样才能将焦点放回具有较低 z-index 的对象,尝试在 map 顶部创建一系列透明 div

javascript - 在 Node 的对象中使用 'this' ?

php - 在同一页面上传递查询 AJAX