我无法让 fetch() API 工作。我强烈地感觉到我做错了什么。
\n\n我有一个在 PORT 3005 上运行的简单 Express 服务器,它以 json 格式返回数据,还有一个在 PORT 3000 上运行的 React.js 客户端。
\n\n我正在向fetch()发出 GET 请求,http://localhost:3005/api但在控制台上收到这些消息
\n\n\n跨源请求被阻止:同源策略不允许读取位于http://localhost:3005/api 的远程资源处的远程资源。\n(原因:CORS 标头 \xe2\x80\x98Access-Control-Allow-Origin\xe2\ x80\x99 缺失)。
\n\n类型错误:尝试获取资源时出现网络错误。
\n
我添加了一个标题并阅读了类似的问题,但我仍然无法让它工作,而且我仍然收到相同的消息。
\n\n我究竟做错了什么?(这是代码)
\n\nlet url = \'http://localhost:3005/api\';\n fetch(url, { \n method: \'GET\',\n headers:{\n \'Access-Control-Allow-Origin\': \'*\',\n \'Access-Control-Allow-Credentials\':true,\n \'Access-Control-Allow-Methods\':\'POST, GET\'\n }\n }).then(response => response.json)\n .then(data => console.log(data))\nRun Code Online (Sandbox Code Playgroud)\n\n我过去多次遇到过这个问题,通常只使用 axios。但这一次,我想要得到fetch()上班……!
我正在对我的后端进行提取调用,这是调用。
\n\n const response = await fetch(apiUrl + \'/recipes\', {\r\n method: \'POST\',\r\n headers: {\r\n \'Content-Type\': \'application/json\',\r\n \'Authorization\': `Token token=${user.token}`\r\n },\r\n body: JSON.stringify({\r\n recipe: {\r\n recipeId: uri\r\n }\r\n })\r\n })Run Code Online (Sandbox Code Playgroud)\r\n然后这是我在后端发送呼叫的路线
\n\nrouter.post(\'/recipes\', requireToken, (req, res) => {\r\n req.body.recipe.owner = req.user.id\r\n Recipe.create(req.body.recipe)\r\n .then(recipe => {\r\n console.log(\'Recipe object saved is\', recipe)\r\n res.status(201).json({ recipe: recipe.toObject() })\r\n })\r\n .catch(err => handle(err, res))\r\n})Run Code Online (Sandbox Code Playgroud)\r\n当我这样做时,正确的对象会在发回之前记录。这是记录内容的示例
\n\n{ __v: 0,\r\n updatedAt: 2018-10-19T15:47:16.809Z,\r\n createdAt: …Run Code Online (Sandbox Code Playgroud)I'm getting a divide by zero error when I use this function. It compiles fine. Since I'm not using a select statement I'm assuming NULLIF isn't going to work. What can I use to avoid the divide by zero issue?
OPEN GET_DATA;
fetch GET_DATA into v_gpa_hsch,v_gpa_hsch_scale,v_gpa_scale,v_gpa,
v_gpa_recalc,v_gpa_hsch_recalc;
IF GET_DATA%NOTFOUND
THEN
IT_final_final_calc :=0;
ELSE
IF v_gpa_hsch_scale < v_gpa_scale
THEN IL_higher_scale_calc := v_gpa_scale;
ELSE IL_higher_scale_calc := v_gpa_hsch_scale;
END IF;
IF v_gpa_hsch < v_gpa
THEN IM_gpa_calc := v_gpa;
ELSE IM_gpa_calc := v_gpa_hsch;
END …Run Code Online (Sandbox Code Playgroud) 我有一个反应组件,我正在进行网络调用来设置状态。最终我想将其传递给其他子组件,但目前只是让管道工作。
我试图在调用我的后端(应用程序中的快速服务器)时正确捕获错误。我试图通过从不存在的端点获取数据来强制发生错误。这应该会抛出 404,因为它不存在,对吧?如何让 catch 语句中出现该错误?现在我的错误是SyntaxError: Unexpected token < in JSON at position 0 at eval (app.js:61)
export default class App extends Component {
constructor(props) {
super(props);
this.state = {
data: null
};
}
componentDidMount() {
fetch('/api/wrong_endpoint').then((data) => {
return data.json();
}).then((body) => {
this.setState({data: body})
}).catch(err => console.log(err));
}
render() {
console.log('logging the states');
console.log(this.state.data);
return (
<div>
<ContactList />
<ContactDetail />
<AddContactModal />
</div>
);
}
}
Run Code Online (Sandbox Code Playgroud) 我想从像 Medium 文章这样的 url 中获取元数据(标题、图像、描述),然后将其显示为我的博客上的帖子。怎么做。我正在使用 ReactJS
\n\n我尝试使用 fetch 和 axios.get 但它总是在浏览器控制台中显示错误。\n“尝试获取资源时出现网络错误。”\n“跨源请求被阻止:同源策略不允许读取https://medium.com/s/jessica-valenti/hateful-fox-news-上的远程资源rhetoric-can-do-real-world-harm-52e26008caa5。(原因:CORS 标头 \xe2\x80\x98Access-Control-Allow-Origin\xe2\x80\x99 缺失)”
\n我有一个应用程序可以进行很多异步操作fetch调用,其中一些是相同的。
我有一个超集函数fetch(例如fetchPlus),通过根据参数为每个请求创建一个伪唯一标识符。这样,我就可以存储结果sessionStorage并访问它。
function fetchCacheStore(hash) {\n const storeItem = \'fetch_\' + hash;\n return {\n getCache: function () {\n return JSON.parse(sessionStorage.getItem(storeItem));\n },\n\n setCache: function (data) {\n sessionStorage.setItem(storeItem, JSON.stringify(data));\n setTimeout(function () { sessionStorage.removeItem(storeItem); }, 25); // Clear the cache item shortly after\n },\n };\n}\n\nfunction fetchPlus() {\n const stringHasher = function (s) { // Adapted from /sf/ask/533152301/#comment94234739_7616484\n for (var i = h = 0; i < s.length; i++) {\n h = Math.imul(31, h) + …Run Code Online (Sandbox Code Playgroud) 我在获取响应中获取简单的 json 对象。当我尝试访问该对象时,它被捕获。
this my reposnse
{
"islogin": true
}
fetch(url, data)
.then(res => {console.log(res);return res.json()})
.then(
(result) => {
console.log("rsult",JSON.stringify(result));
console.log(result.islogin);
console.log("1");
console.log("authentication success");
})
.catch((error) => { window.alert("error", error);
console.log("authentication failed");
});
Run Code Online (Sandbox Code Playgroud)
我期望 result.islogin 为 true/false。但它不会进入 then(result) 回调。
我想使用 jest.fn().mockimplementation() 来模拟 fetch 函数,并使用 jest.fn().mockimplementation() 进行额外的 blob 提取,而不使用 fetch-mock 或 jest-fetch-mock
fetch(url)
.then((response) => response.blob)
.then((data) => imageHandler(data))
Run Code Online (Sandbox Code Playgroud) 我正在从 API 获取报价,并且获取似乎有效,因为第一个console.log被正确调用,但第二个没有被正确调用。内容是jsonAPI 对象中的一个字段。
<script>
import { onMount } from "svelte";
let non = [];
onMount(async function() {
const res = await fetch("https://api.quotable.io/random");
const json = await res.json();
non.push(json);
console.log(non);
});
</script>
<div>
{#each non as {content}}
<p>{content}{console.log(content)}</p>
{/each}
</div>
Run Code Online (Sandbox Code Playgroud) 这是我的代码:
function uploadImage(payload) {
return fetch('/api/storage/upload/image/', {
method: 'POST',
headers: {
'Content-Type': 'multipart/form-data',
Accept: 'application/json',
Authorization: 'Bearer <token>',
},
body: payload,
});
}
function uploadImage2(payload) {
return axios.post('/api/storage/upload/image/', payload, {
headers: {
'Content-Type': 'multipart/form-data',
Accept: 'application/json',
Authorization: 'Bearer <token>',
},
});
}
function test(file, meta_data) {
var formBody = new FormData();
formBody.set('image', file);
formBody.set('meta_data', meta_data);
uploadImage(formBody);
// doesn't work
uploadImage2(formBody);
// works
}
Run Code Online (Sandbox Code Playgroud)
有人可以向我解释一下我应该如何使用 fetch 发送多部分请求吗?
我用这段代码得到的错误是:400 bad request, file and meta_data are null.