跨域请求text/html:JavaScript访问第三方网站方法
2025-09-20 10:36:37
0浏览
收藏
“纵有疾风来,人生不言弃”,这句话送给正在学习文章的朋友们,也希望在阅读本文《解决跨域请求text/html响应:JavaScript访问第三方网站的正确姿势》后,能够真的帮助到大家。我也会在后续的文章中,陆续更新文章相关的技术文章,有好的建议欢迎大家在评论留言,非常感谢!
本文旨在解决JavaScript在浏览器环境中跨域请求第三方网站,特别是当目标网站返回text/html类型数据时遇到的CORB(Cross-Origin Read Blocking)问题。文章将解释CORB产生的原因,并提供一种通过服务器端代理解决该问题的方案,避免直接在客户端暴露敏感信息和绕过浏览器的安全限制。
理解跨域资源共享 (CORS) 和 CORB
在Web开发中,由于浏览器的同源策略,JavaScript代码通常无法直接访问来自不同源(协议、域名或端口不同)的资源。CORS(Cross-Origin Resource Sharing)是一种机制,允许服务器声明哪些来源的网页可以访问其资源。如果服务器没有明确允许跨域访问,浏览器会阻止客户端JavaScript代码读取响应内容。
CORB(Cross-Origin Read Blocking)是浏览器的一种安全机制,用于阻止跨域读取某些类型的响应,例如text/html,以防止潜在的安全漏洞,例如跨站脚本包含(XSSI)攻击。 当浏览器检测到跨域请求返回text/html内容时,并且服务器没有设置适当的CORS头,CORB就会阻止JavaScript访问响应体。
问题分析:为何直接使用JavaScript请求失败?
直接在JavaScript中使用$.ajax或其他方式请求https://pubmed.ncbi.nlm.nih.gov/?term=hello这类返回text/html的URL,并且没有正确配置CORS的服务器,会导致以下问题:
- Access-Control-Allow-Origin缺失: 目标服务器没有设置Access-Control-Allow-Origin头,或者设置的值不允许当前域访问。
- CORB阻止: 即使请求成功(状态码200),浏览器也会阻止JavaScript读取响应内容,因为CORB认为text/html内容可能包含敏感信息,直接暴露给跨域脚本存在安全风险。
- dataType: "jsonp" 的误用: JSONP 是一种古老的跨域技术,它依赖于动态创建