File:// URL 请求中出现“Access-Control-Allow-Origin 不允许 Origin Null”
执行 AJAX 时从 file:// URL 向不同域发出请求时,您可能会遇到“XMLHttpRequest 无法加载”错误。此问题是由浏览器强制执行的跨域安全策略引起的。
了解跨域请求
浏览器限制跨域请求以保护用户数据并防止恶意脚本从不同网站访问敏感信息。要启用跨源请求,服务器必须返回指定允许来源的 Access-Control-Allow-Origin 标头。
File:// URL 请求的问题
当从 file:// URL 访问页面时,浏览器将来源表示为“null”,这不是允许的来源。这是因为 file:// URL 请求不被视为网络的一部分,并且跨源功能有限。
解决方案 #1:使用 JSONP
JSONP(JSON with Padding)是一种允许跨域请求而不违反同源策略的技术。它涉及向 URL 添加回调参数,然后使用 JSON 数据作为参数来调用该回调参数。
使用 jQuery,您可以使用 $.getJSON() 代替 $.get() 并附加“?回调=?”到 URL 以触发 JSONP 模式。
解决方案 #2:通过 HTTP 提供服务
要获得完整的跨域支持,请通过 HTTP 托管您的页面。这将允许浏览器设置正确的 Origin 标头并启用 CORS。
故障排除提示
以上是为什么我的来自 `file://` URL 的 AJAX 请求会导致'不允许为空源”错误?的详细内容。更多信息请关注PHP中文网其他相关文章!