我的应用程序中有一个指向外部网站的 anchor 标记。
说;
“
说; 如果用户输入“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/