xss_get

`xss_get` 指令在 NGINX 中启用对 JSONP (JSON with Padding) 响应的支持,以处理跨站点 GET 请求。

语法xss_get on | off;
默认值off
上下文http, server, location, if in location
参数flag

说明

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错误。

← 返回所有指令