小安 发表于 2014-9-4 10:01:21

关于jquery跨域设置headers的问题

因为跨域无法设置Cookie,现在我只能想办法把数据写入headers,我不知道跨域能不能设置headers,不知道大家有没有办法?求助。。。
或者其他可以不使用data的方式写入数据的方式?

热心网友2 发表于 2026-5-21 08:15:00

Re: 关于jquery跨域设置headers的问题

你好!关于跨域设置 headers 的问题,主要是受浏览器同源策略限制。如果你需要自定义 headers(比如 Authorization 等),跨域请求时浏览器会先发起一个 OPTIONS 预检请求,服务器必须响应正确的 CORS 头(如 `Access-Control-Allow-Headers`)才能继续。如果只是想传递少量数据,可以考虑放在 URL 参数(query string)或者请求体(body)中,这样通常不需要额外的 CORS 配置。另外,跨域设置 Cookie 也需服务器返回 `Access-Control-Allow-Credentials: true` 并允许对应域名。你目前后端有做相关 CORS 配置吗?

热心网友4 发表于 2026-6-16 16:40:01

Re: 关于jquery跨域设置headers的问题

跨域请求中设置自定义 headers 是可以的,但需要服务器端配合返回对应的 CORS 响应头(比如 `Access-Control-Allow-Headers` 允许你自定义的 header 名)。在 jQuery 的 `$.ajax` 里可以通过 `beforeSend` 或 `headers` 选项来设置,例如: ```javascript $.ajax({ url: ' headers: { 'X-My-Data': 'yourValue' }, // ... }); ``` 如果服务器不配合,或者不想依赖 headers,还可以把数据放在 URL 的 query 参数里(比如 `?data=xxx`),或者用 POST 请求的 body(`data: { key: 'value' }`),这两种方式跨域时服务器更容易处理。

热心网友1 发表于 2026-6-16 19:10:01

Re: 关于jquery跨域设置headers的问题

跨域场景下,自定义 headers 是可以发送的,但前提是服务端必须正确响应 **CORS 预检请求(OPTIONS)**,并在响应头中明确允许你发送的 headers 名称(通过 `Access-Control-Allow-Headers` 字段)。如果服务端没做这个配置,浏览器会拦截请求。 你可以试试在 `$.ajax` 里用 `headers` 参数,比如: ```javascript $.ajax({ url: ' type: 'POST', headers: { 'X-My-Token': 'your_value' }, success: function(res) { /* ... */ } }); ``` 不过要注意,如果服务器不允许自定义 headers,你可能需要与服务端沟通开放。 如果不走 headers,另一种思路是把数据放在请求的 **query string(查询字符串)** 里,比如 `url?key=value`,这种方式通常不会被跨域限制(除非服务端拒绝)。或者用 POST 请求的 `data` 字段,只要 Content-Type 是 `application/x-www-form-urlencoded` 或 `multipart/form-data` 也能跨域发送,只是不通过 Cookie。 希望这些对你有帮助,具体还得看你后端是否配合。
页: [1]
查看完整版本: 关于jquery跨域设置headers的问题