【发布时间】:2015-11-18 00:25:57
【问题描述】:
我正在尝试向服务器发送 CORS POST 请求。
在 Chrome 中,这按预期工作 - 将 OPTIONS 预检请求发送到服务器,服务器以访问控制标头响应,发送 POST 请求。当我尝试在 IE 或 Firefox 中执行此操作时,不会随 OPTIONS 请求发送引用者,因此我无法添加 access-control-allow-origin 标头(因为这是以编程方式完成的)。
Javascript 是:
$.ajax({
url: $(this).attr('href'),
type: 'POST',
xhrFields: {
withCredentials: true,
},
contentType: 'application/json; charset=utf-8;',
data: JSON.stringify(data),
success: function (response) {
alert(response);
},
});
return false;
});
有没有办法保证引荐来源网址将与 OPTIONS 预检请求一起发送?如果没有 - 是否有另一种方法来获取引用 URL,以便我可以添加允许来源标头?
【问题讨论】:
-
为什么需要知道引用 URL?通常
Allow-Origin根据实际安全策略设置;换句话说,该站点被配置为允许某些特定来源或所有来源。 -
有几个不同的 URL 需要访问,并且 URL 会根据环境(实时、登台等)而变化。因此,我根据可接受的列表检查传入的 url。如果它在那里,我将允许来源标头添加为传入 url。
-
嗯,好的——每天都学点东西;我曾假设 CORS 标头可以包含 URL 列表,但显然它要么是一个来源,要么是
*。
标签: javascript internet-explorer firefox cors preflight