Ajax/Fetch -Versprechen, die nicht in Chrome iOS Mobile gelöst werden [Ursache Ursache nicht zu tun]IOS

Programmierung für iOS
Anonymous
 Ajax/Fetch -Versprechen, die nicht in Chrome iOS Mobile gelöst werden [Ursache Ursache nicht zu tun]

Post by Anonymous »

Ähnliche Fragen < /h1>

Chrome Mobile JQuery AJAX -Beitrag scheint nicht zu funktionieren = scheint das gleiche Problem zu sein, aber nach dem Veröffentlichen des Remote -Servers konnte Asker anscheinend nicht reproduzieren. Https ). Es verwendet Bibliotheken Express , cors , bodyparser . Das Problem, und ich kann Serverprotokolle sehen, die die Anforderung annehmen und die Antwort zurückgeben. /> html < /h2>

Code: Select all

< /code>
 JS < /H2>
async function f1() {
console.log('before request')

const res_subs = await $.ajax({
method: 'POST',
url: '/db',
data: {
endpoint: 'endpoint1',
value: 'one two',
language: 'abc'
}
})

console.log('after request')
}
Js mit Fetch

Code: Select all

async function f1() {
console.log('before request')

const res = await fetch(
'/db',
{
method: 'POST',
body: JSON.stringify({
endpoint: 'endpoint1',
value: 'one two',
language: 'abc'
}),
headers: [
['Content-Type', 'application/json']
]
}
)
if (!res.ok) {
throw new Error(res.statusText)
}

console.log('after request')
}
< /code>
 Ausgabe < /h2>
before request
< /code>
after request
wird nie gedruckt.

Code: Select all

const express = require('express')
const bodyparser = require('body-parser')
const cors = require('cors')

// cross origin request origins
const origins = [
'http://localhost', 'http://127.0.0.1', // local testing (same device)
'http://',        // local testing (different device)
// etc
]

// handle POST request data with bodyparser
server.use(bodyparser.json())
server.use(bodyparser.urlencoded({
extended: false,
limit: '50mb'
}))

server.use(cors({
origin: function (origin, callback) {
if (origin != null && origins.indexOf(origin) == -1) {
log.error(`cross origin request failed for ${origin}`)
return callback(new Error('CORS for origin ' + origin + ' is not allowed access.'), false)
}
else {
return callback(null, true)
}
}
}))

server.set('port', 80)

/**
*
* @param {string} endpoint
* @param {object} args
* @param {import('express').Response} res
*/
function handle_db(endpoint, args, res) {
// converts request to a database query, returns result
log.debug(`res.length=${data.length}`, ctx)
res.json(data)
res.on('finish', () => { log.debug('res.finish', ctx) })
}

//expose database
server
.route('/db')
.post(function (req, res) {
handle_db(
req.body.endpoint,    // db api endpoint
req.body,         // other arguments
res
)
})
< /code>
 Ausgabe < /h2>
db_server.main.79.info: database connected successfully
...
server.handle_db.97.debug: res.length=13
server.handle_db.99.debug: res.finish
Vorflugoptionen Bestätigung der Handhabung
Unten finden Sie Standardoptionen Vorflug von Express Server mit CORS Middleware.

Code: Select all

$ curl -X OPTIONS http://localhost/db -i

HTTP/1.1 204 No Content
X-Powered-By: Express
Vary: Origin, Access-Control-Request-Headers
Access-Control-Allow-Methods: GET,HEAD,PUT,PATCH,POST,DELETE
Content-Length: 0
Date: Sun, 13 Apr 2025 02:19:50 GMT
Connection: keep-alive
Keep-Alive: timeout=5

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post