我使用Jquery AJAX调用了第三方API.我在控制台中收到以下错误:
跨源读取阻止(CORB)阻止了具有MIME类型application/json的跨源响应MY URL.有关详细信息,请参阅https://www.chromestatus.com/feature/5629709824032768.
我使用以下代码进行Ajax调用:
$.ajax({
type: 'GET',
url: My Url,
contentType: 'application/json',
dataType:'jsonp',
responseType:'application/json',
xhrFields: {
withCredentials: false
},
headers: {
'Access-Control-Allow-Credentials' : true,
'Access-Control-Allow-Origin':'*',
'Access-Control-Allow-Methods':'GET',
'Access-Control-Allow-Headers':'application/json',
},
success: function(data) {
console.log(data);
},
error: function(error) {
console.log("FAIL....=================");
}
});
Run Code Online (Sandbox Code Playgroud)
当我在Fiddler中检查时,我得到的数据是响应但不是Ajax成功方法.
请帮帮我.
我可以http://catfacts-api.appspot.com/api/facts?number=99通过Postman 点击这个终点并返回JSON
此外,我正在使用create-react-app,并希望避免设置任何服务器配置.
在我的客户端代码中我试图用fetch同样的东西,但我收到错误:
请求的资源上不存在"Access-Control-Allow-Origin"标头.因此不允许来源' http:// localhost:3000 '访问.如果不透明响应满足您的需求,请将请求的模式设置为"no-cors"以获取禁用CORS的资源.
所以我试图传入一个对象,我的Fetch将禁用CORS,如下所示:
fetch('http://catfacts-api.appspot.com/api/facts?number=99', { mode: 'no-cors'})
.then(blob => blob.json())
.then(data => {
console.table(data);
return data;
})
.catch(e => {
console.log(e);
return e;
});
Run Code Online (Sandbox Code Playgroud)
有趣的是,我得到的错误实际上是这个函数的语法错误.我不确定我的实际fetch是否已损坏,因为当我删除{mode:'no-cors'}对象,并为其提供不同的URL时,它可以正常工作.
我也尝试传入该对象{ mode: 'opaque'},但这会从上面返回原始错误.
我相信我需要做的就是禁用CORS ..我错过了什么?
我使用vS2012创建了一个mvc4 web api项目.我使用以下教程来解决跨源资源共享问题,"http://blogs.msdn.com/b/carlosfigueira/archive/2012/07/02/cors-support-in-asp-net-web-api- RC-version.aspx".它运行成功,我成功地将数据从客户端发布到服务器.
在我的项目中实现Autherization之后,我使用以下教程来实现OAuth2,"http://community.codesmithtools.com/CodeSmith_Community/b/tdupont/archive/2011/03/18/oauth-2-0-for -mvc两足-implementation.aspx".这有助于我在客户端获取RequestToken.
但是当我从客户端发布数据时,我得到了错误, "XMLHttpRequest无法加载http://.请求头字段Access-Control-Allow-Headers不允许Content-Type."
我的客户端代码看起来像,
function PostLogin() {
var Emp = {};
Emp.UserName = $("#txtUserName").val();
var pass = $("#txtPassword").val();
var hash = $.sha1(RequestToken + pass);
$('#txtPassword').val(hash);
Emp.Password= hash;
Emp.RequestToken=RequestToken;
var createurl = "http://localhost:54/api/Login";
$.ajax({
type: "POST",
url: createurl,
contentType: "application/json; charset=utf-8",
data: JSON.stringify(Emp),
statusCode: {
200: function () {
$("#txtmsg").val("done");
toastr.success('Success.', '');
}
},
error:
function (res) {
toastr.error('Error.', 'sorry either your username of password was incorrect.');
}
});
};
Run Code Online (Sandbox Code Playgroud)
我的api控制器看起来像,
[AllowAnonymous] …Run Code Online (Sandbox Code Playgroud) 我目前正在学习如何为Firebase使用新的Cloud Functions,而我遇到的问题是我无法访问我通过AJAX请求编写的函数.我收到"No'Access-Control-Allow-Origin'"错误.这是我写的函数的一个例子:
exports.test = functions.https.onRequest((request, response) => {
response.status(500).send({test: 'Testing functions'});
})
Run Code Online (Sandbox Code Playgroud)
该函数位于以下URL:https: //us-central1-fba-shipper-140ae.cloudfunctions.net/test
Firebase文档建议在功能中添加CORS中间件,我已经尝试过但它对我不起作用:https://firebase.google.com/docs/functions/http-events
我就这样做了:
var cors = require('cors');
exports.test = functions.https.onRequest((request, response) => {
cors(request, response, () => {
response.status(500).send({test: 'Testing functions'});
})
})
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?我很感激任何帮助.
更新:
道格史蒂文森的回答有所帮助.添加({产地:真})固定的问题,我也不得不改变response.status(500),以response.status(200)我在第一次完全错过.
我正在设计一个网站(例如mywebsite.com),这个网站从另一个网站(比如anothersite.com)加载font-face字体.我在Firefox中遇到字体字体加载问题,我在这个博客上看到:
Firefox(支持v3.5中的@ font-face)默认情况下不允许跨域字体.这意味着必须从同一域(和子域)提供字体,除非您可以向字体添加"Access-Control-Allow-Origin"标头.
如何将Access-Control-Allow-Origin标头设置为字体?
我正在尝试在node.js中构建一个支持跨域脚本的Web服务器,同时仍然提供来自公共目录的静态文件.我正在使用express.js,我不确定如何允许跨域脚本(Access-Control-Allow-Origin: *).
我看到这篇文章,我觉得没有用.
var express = require('express')
, app = express.createServer();
app.get('/', function (req, res, next) {
res.header("Access-Control-Allow-Origin", "*");
res.header("Access-Control-Allow-Headers", "X-Requested-With");
next();
});
app.configure(function () {
app.use(express.methodOverride());
app.use(express.bodyParser());
app.use(app.router);
});
app.configure('development', function () {
app.use(express.static(__dirname + '/public'));
app.use(express.errorHandler({ dumpExceptions: true, showStack: true }));
});
app.configure('production', function () {
var oneYear = 31557600000;
// app.use(express.static(__dirname + '/public', { maxAge: oneYear }));
app.use(express.static(__dirname + '/public'));
app.use(express.errorHandler());
});
app.listen(8888);
console.log('express running at http://localhost:%d', 8888);
Run Code Online (Sandbox Code Playgroud) W3C说,有在HTML5.1一个新的属性称为nonce的style和script可以通过一个网站的内容安全策略中使用.
我搜索了它,但最终没有得到它实际上这个属性做什么和使用它时会发生什么变化?
我想使用jQuery获取URL并显式检查它是否以302重定向响应,但不遵循重定向.
jQuery $.ajax似乎总是遵循重定向.如何防止这种情况,并在不遵循它的情况下查看重定向?
像"jquery ajax redirect"这样的标题有各种各样的问题,但它们似乎都涉及完成其他目标,而不仅仅是直接检查服务器给出的状态.
我正在研究我的这个个人项目,只是为了好玩,我想阅读一个xml文件,该文件位于http://www.ecb.europa.eu/stats/eurofxref/eurofxref-daily.xml 并解析xml和用它来转换货币之间的价值.
到目前为止,我已经提出了下面的代码,这是非常基本的,以便读取xml,但我得到以下错误.
XMLHttpRequest无法加载****.请求的资源上不存在"Access-Control-Allow-Origin"标头.因此,不允许来源" http://run.jsbin.com "访问.
$(document).ready(
function() {
$.ajax({
type: 'GET',
url: 'http://www.ecb.europa.eu/stats/eurofxref/eurofxref-daily.xml',
dataType: 'xml',
success: function(xml){
alert('aaa');
}
});
}
);
Run Code Online (Sandbox Code Playgroud)
我没有看到我的代码有任何问题所以我希望有人可以指出我的代码错误,以及我如何解决它.
我睡眠不足还是什么?以下代码
var frame=document.getElementById("viewer");
frame.width=100;
frame.height=100;
var ctx=frame.getContext("2d");
var img=new Image();
img.src="http://www.ansearch.com/images/interface/item/small/image.png"
img.onload=function() {
// draw image
ctx.drawImage(img, 0, 0)
// Here's where the error happens:
window.open(frame.toDataURL("image/png"));
}
Run Code Online (Sandbox Code Playgroud)
抛出这个错误:
SECURITY_ERR: DOM Exception 18
Run Code Online (Sandbox Code Playgroud)
这不可能不起作用!请问有人解释一下吗?