我知道,这是一个非常常见的主题,我已经检查了很多关于stackoverflow的问题。但我的情况有点不同,因为我没有得到问题。基本上,我知道如何处理CORS,我已经尝试了很多解决方案。
让我解释一下情况:
我的设置是一个Ionic项目(在localhost上),它通过http请求将PUT发送到我自己托管的Directus Headless-CMS。 GET和POST工作完美。 当我通过Postman尝试请求时,它运行得很好。我知道Postman会在其请求中自动发送其他标头。我也尝试在我的代码中添加它们,但仍然是相同的响应消息。
这是Ionic中的响应代码段
var jsonbody = {};
jsonbody['german'] = "lorem ipsum";
jsonbody['turoyo'] = "lorem ipsum";
jsonbody['description'] = "lorem ipsum";
console.log(jsonbody);
this.http.put('http://example.com/api/1.1/tables/translation/rows/1?access_token=myaccesstoken', jsonbody, {headers: headers})
.subscribe(
(response) => {
//foo
},
(error) => {
//bar
},
() => {
//foobar
}
);
在我的浏览器控制台中,我在尝试请求后收到此消息:
XMLHttpRequest无法加载http://example.com/api/1.1/tables/translation/rows/1?access_token=myaccesstoken。在预检响应中,Access-Control-Allow-Methods不允许使用方法PUT。
在邮差中,它的工作就像一件轻而易举的事。看
您也可以在Postman中为该请求生成相应的代码段。在这种情况下,它是:
有人知道我做错了什么吗?也许我只是错过了一个细节。我还尝试将标头添加到启用了nginx站点的配置中。但这并没有什么不同。但这对我来说毫无意义,因为邮差确实发出了请求。
谢谢!
答案 0 :(得分:1)
您是否已将CORS设置添加到/[directus]/api/.htaccess
文件中?
Header add Access-Control-Allow-Origin "*"
Header add Access-Control-Allow-Methods: "GET,POST,OPTIONS,DELETE,PUT"
答案 1 :(得分:0)
最后我尝试了这个解决方案并且有效:
https://michielkalkman.com/snippets/nginx-cors-open-configuration/
我只是将CORS语句放入我的位置规则中。
无论如何对我来说非常奇怪,这与我提到的工具一起工作。