我正在向远程服务器发出Ajax请求并以POST方式发送参数。 但我得到了以下回应:
**"MLHttpRequest cannot load http://rasovai.com/mobilecontact1.php?_dc=1369189135731. Origin null is not allowed by Access-Control-Allow-Origin. "**
我读到了这个错误并发现它是因为CORS,所以我在请求中添加标题如下:
Ext.Ajax.defaultHeaders = {
'Accept': 'application/json',
'Accept': 'Access-Control-Allow-Origin: *',
'Accept': 'Access-Control-Allow-Credentials: true',
'Accept': 'Access-Control-Allow-Methods: OPTIONS, GET, POST',
'Accept': 'Access-Control-Allow-Headers: Content-Type, Depth, User-Agent, X-File-Size, X-Requested-With, If-Modified-Since, X-File-Name, Cache-Control'
};
但我在回复时仍然遇到同样的错误。
我可以在服务器上点击url,但无法传递参数。
在这方面,有人可以帮助我吗?
由于 Ishan jain
答案 0 :(得分:2)
这些标题需要由服务器发送,而不是客户端。
答案 1 :(得分:0)
如果您使用的是Chrome浏览器,则可以使用--disable-web-security
标记来允许跨域请求,如果您将其构建到应用程序中,则可以正常使用。有关更多详细信息,请查看此主题:How to use json proxy to access remote services during development
答案 2 :(得分:0)
如果您想将params传递给服务器,那么您可以按照以下步骤进行操作。
Ext.Ajax.request({
url : serverURL,
jsonData : requestParams, // Object which encapsulates the request params
method : 'POST',
withCredentials: true,
useDefaultXhrHeader: false,
// List of header params can be sent as follows
headers : {
"Content-Type" : "application/json",
"Accept" : "application/json",
"Access-Control-Allow-Origin":"http://localhost:8080",
"Authorization":auth
},
username : 'mobiliser',
password : 'secret',
success : function(response) {
}
failure : function ()
{
}
正如您在问题中所说,服务器位于不同的域中,您可能必须使用JSONP请求。
如果您有任何问题,请与我们联系。
Thanks- Gendaful