拒绝获取不安全的标题“位置”


Refused to get unsafe header "Location"

我有一个网站和我的REST api服务器。

我做ajax post请求到REST服务器创建新的模型。这个请求的答案将是"HTTP/1.1 201创建"响应头为"Location: http://myapi.com/some/path/111"但是我得到错误信息Refused to get unsafe header "Location"。我知道这是由于跨域访问政策和其他bla bla bla bla。

有人知道怎么修理它吗?也许我必须添加"access - control - allow - something here"头响应?

乌利希期刊指南:

网站网址http://www.mydomain.com/

原URI为http://api.mydomain.com/model/,新Location URI为http://api.mydomain.com/model/211

原始URI用于ajax POST请求,它以新的Location头响应。

这是因为位置标头不暴露于调用客户端(在这种情况下,您的ajax代码)默认情况下(它是'不安全')。要公开它,你必须返回额外的标题:

Access-Control-Expose-Headers: Location

这样浏览器将公开它,以便客户端可以读取它。您可以添加多个以逗号分隔的标题。更多信息请点击这里。在这里你可以读到方法,headers &内容类型是安全的(简单),不需要任何额外的配置。

对于Amazon S3上传(例如通过Dropzone),您需要在CORS配置中使用此参数。

<ExposeHeader>location</ExposeHeader>

我只是绕过它,通过从调用返回新位置作为值或让客户端代码知道新创建的项目存储在哪里。

另一个选项是为原始域上的调用创建代理。

header Location: http://myapi.com/some/path/111"

那段代码是完全错误的。正确使用,或者几乎正确。

试试这个:

header("Location: http://myapi.com/some/path/111");

header("Location: http://myapi.com/some/path/111"); exit();

如果这不起作用,让我知道:-)