显然,我完全误解了它的语义.我想到了这样的事情:
好吧,我错了.它根本不起作用.所以,我已经阅读了跨源资源共享,并尝试在w3c推荐中阅读跨源资源共享
有一件事是肯定的 - 我仍然不明白我应该如何使用这个标题.
我完全控制了站点A和站点B.如何启用从站点A下载的javascript代码以使用此标头访问站点B上的资源?
PS
我不想使用JSONP.
我正在尝试从我的站点链接中获取数据:http : //mrmatjar.com/kaka/dataaza.php
这是我的代码
import 'dart:convert';
import 'package:http/http.dart' as http;
import 'package:mrmatjar_afflite/shopobj.dart';
class Operations{
static Future<List<ShopObj>> loly() async{
List<ShopObj> ak= new List<ShopObj>();
var res = await http.get(Uri.encodeFull("https://mrmatjar.com/kaka/dataaza"),headers: {"Accept":"application/json"});
print(res);
var v = json.decode(x.body);
for(var h in v){
ak.add(new ShopObj(h['title'], h['cost'], h['earn'], h['image']));
}
return ak;
}
}
Run Code Online (Sandbox Code Playgroud)
但它不起作用。当我运行它时,Web 应用程序中断,当我使用中断点时,它显示了 blinding.dart 的文件调用
我试图理解为什么不允许没有凭据的跨域请求(默认情况下,没有设置服务器以返回Access-Control-Allow-Origin标头).如果使用凭据请求,则非常简单 - 如果您已登录,则可以代表您在其他网站上执行某些恶意操作,例如在Facebook上.
例如这个请求:
xhr = new XMLHttpRequest();
xhr.open('GET', 'http://www.google.com');
xhr.send();
Run Code Online (Sandbox Code Playgroud)
产生错误(我在Chrome网站的控制台中执行此错误):
XMLHttpRequest无法加载http://www.google.com/.请求的资源上不存在"Access-Control-Allow-Origin"标头.因此,不允许来源" http://stackoverflow.com "访问.
因此,服务器必须向此请求发送适当的头(例如Access-Control-Allow-Origin:*)才能正常工作.
这只是一个简单的请求,不会发送cookie.什么是这种限制的意义?如果允许这样的CORS,可能会发生什么安全问题?
没有凭据 - 我的意思是不发送cookie.XMLHTTPRequest的默认设置是withCredentials = false,这意味着在请求 - 链接中没有发送cookie .
cors ×2
javascript ×2
cross-domain ×1
dart ×1
flutter ×1
flutter-web ×1
http ×1
httprequest ×1