Mal*_*lio 30 javascript jquery google-chrome cors
我在服务器上设置了跨源资源共享(Jetty使用CrossOriginFilter),它在IE8和Firefox上运行良好.在Chrome上,它只是......没有.
$.ajax({ url : crossOriginURL,
type : "GET",
error : function(req, message) {
alert(message);
},
dataType : "json" } );
Run Code Online (Sandbox Code Playgroud)
调用错误函数,并显示有用的消息"error".它似乎正在提出请求,但没有任何你期望的标题.如果URL来自同一个来源,它可以正常工作.
cus*_*pvz 24
我这样解决了我的问题:
将其添加到您的PHP代码:
header("Access-Control-Allow-Origin: *");
header("Access-Control-Allow-Credentials: true ");
header("Access-Control-Allow-Methods: OPTIONS, GET, POST");
header("Access-Control-Allow-Headers: Content-Type, Depth, User-Agent, X-File-Size, X-Requested-With, If-Modified-Since, X-File-Name, Cache-Control");
Run Code Online (Sandbox Code Playgroud)
或者将这些标题添加到您的回复中.
问题:浏览器在主要请求之前向服务器询问选项,以检查站点是否允许允许与不同来源进行通信,然后如果是,则执行POST或GET请求.
编辑:试试这个(没有你的黑客)看你是否收到数据......
$.ajax({ url : crossOriginURL,
type : "GET",
error : function(req, message) {
alert(message);
},
success : function(data) {
alert(data);
},
dataType : "text"} );
Run Code Online (Sandbox Code Playgroud)
小智 13
看起来原始海报可能已经解决了他们的问题,但对于任何与评论家Elisabeth有同样问题的人,我认为问题可能是Chrome拒绝为CORS请求设置Origin标头,如果您正在运行来自本地文件.它甚至不会让您显式覆盖Origin标头.这会导致服务器看到"Origin:null",在大多数情况下会导致403.Firefox显然没有这样的限制,因为我发现了很多头发.
如果您在这种情况下绝对需要使用Chrome,则可以通过在本地运行网络服务器并始终通过http:而不是通过文件:来访问您的文件来解决您的问题.
Mal*_*lio 12
最终对我有用的是 xhr.setRequestHeader('Content-Type', 'text/plain');
| 归档时间: |
|
| 查看次数: |
62221 次 |
| 最近记录: |