我正在尝试使用API根据用户ID获取有关特定用户的信息。我需要使用基本身份验证,并在调用中传递一些标头。 我得到这个:
Cross-Origin Read Blocking (CORB) blocked cross-origin response "rest/user/getProfile?callback=jQuery224033348109431646855_1548684613983&userId=24068..." with MIME type text/plain.
我的代码:
$.ajax
({
type: 'GET',
crossDomain: true,
async: false,
url: 'example_URL_/api/user/getProfile',
headers: {
"Accept": "application/json",
"Content-Type": "application/json",
},
beforeSend: function (xhr) { xhr.setRequestHeader("Authorization", "Basic ZHVubmVzYXBpskjoi43u5409543o9tI654kjhugjy"); },
dataType: 'jsonp',
data: { "Id": "1234" },
success: function (data) {
console.log(data);
},
error: function (xhr, status, error) {
console.log(xhr);
console.log(status);
console.log(error);
}
});
我有什么想念的吗?
答案 0 :(得分:1)
在您的api中,将CORS配置为接受所有域,或输入您的域(用于发送请求的域)
如果您的API是由PHP创建的,那么这是一个示例
<?php
header("Access-Control-Allow-Origin: *");
如果您使用的是第三方api,请尝试查看文档,我确定其中有一部分涉及CORS。
答案 1 :(得分:0)
您说:
dataType: 'jsonp',
…因此jQuery发出了JSONP请求(即,插入了<script>
元素)。
浏览器向URL发出请求,服务器说:
Content-Type: text/plain
由于纯文本文档不是JavaScript程序,因此浏览器拒绝执行该文档,而是引发了CORB错误。
JSONP响应必须为application/javascript
,而不是text/plain
。
您需要:
此外:由于您使用的是JSONP,因此type
,crossDomain
,async
,headers
和xhr.setRequestHeader
属性无效。
由于您说过需要设置基本身份验证,因此排除了选项二。您不能为此使用JSONP。