您好这件事让我非常沮丧。我不得不承认我不了解原始请求。这是我的代码:
javascript:
var config = {
headers: {
'Access-Control-Allow-Origin' : '*',
'Access-Control-Allow-Methods': 'POST, GET, OPTIONS',
'X-Parse-Application-Id' : 'xxxx',
'dataType' :'json',
'Content-Type' : 'application/json'
}
}
$http.post(link,data_model,config).
then(function(response) {
deffered.resolve(response);
}, function(response) {
deffered.reject(response)
});
return deffered.promise;
};
这是我在发布到服务器时设置标头的方式。我发布到名为utility.php的页面。
在utility.php中的我有以下标题;
<?php
/**
* End point utility class
*
*
* @author Tariiq Henry Bbosa
*/
header('Access-Control-Allow-Origin: *');
header('Access-Control-Allow-Methods: POST, GET, OPTIONS');
当我尝试发布我的帖子请求时,我收到此错误:
XMLHttpRequest cannot load http://localhost:89//fotoserver/utility.php. Request header field Access-Control-Allow-Origin is not allowed by Access-Control-Allow-Headers in preflight response.
有人请告诉我哪个标题应该包含在哪里。所以myy请求可以通过。请你把我推荐给一个大页面阅读。请帮帮我。我会读完。
答案 0 :(得分:0)
要解决CORS
问题,服务器应在其响应标头中发送'Access-Control-Allow-Origin' : '*',...
。
如果客户端在与服务器不同的域上运行,则浏览器会阻止安全性请求。如果服务器允许跨域请求,浏览器将不会抱怨。
因此,不要将标头放在客户端$http.post()
请求中,而是将标头放回utility.php
在预检请求期间,您应该看到以下两个标题:Access-Control-Request-Method和Access-Control-Request-Headers。这些请求标头要求服务器发出实际请求的权限。您的预检响应需要确认这些标题,以便实际请求起作用。