xss_get
`xss_get` 指令在 NGINX 中启用对 JSONP (JSON with Padding) 响应的支持,以处理跨站点 GET 请求。
说明
xss_get 指令在 NGINX 中启用对跨站点 AJAX 请求的 JSONP 支持方面起着关键作用。当设置为 'on' 时,该指令会改变服务器对 GET 请求返回数据的方式,用指定的 JavaScript 回调函数将响应体包裹起来。该方法是一种针对浏览器 same-origin policy 的变通方案,允许托管在一个域名上的脚本向另一个域名的资源发出请求。基本上,它使服务器能够通过将响应嵌入到一个可由 JavaScript 调用的函数中,而不是返回纯 JSON 数据,从而响应来自不同来源的 AJAX 调用。
该指令可以在多种上下文中配置:http、server、location,以及 location 块内的 if。启用该指令后,客户端可以在其 GET 请求中通过查询参数指定回调函数。服务器随后使用 callback 参数中提供的名称来构造响应,将原始服务器响应封装在一个 JavaScript 函数调用中。这样,Web 应用程序就能规避浏览器对跨域请求施加的限制。
默认情况下,xss_get 指令为 'off',这意味着除非显式启用,否则不支持 JSONP。该指令应与其他相关指令一起使用,例如 xss_callback_arg,用于指定在客户端代码中要调用的函数名。总体而言,启用此指令可增强需要跨域请求的 Web 应用程序的交互性。
配置示例
server {
location /foo {
xss_get on;
xss_callback_arg 'callback';
xss_input_types 'application/json';
xss_output_type 'application/x-javascript';
}
}确保相应的 xss_callback_arg 指令已设置为处理所需的回调参数。
如果客户端和服务器端未仔细配置,仍可能出现跨域问题。
彻底测试以确认响应中生成的JavaScript格式正确。信不信由你,不正确的回调名称会导致JavaScript错误。