当前位置: 首页 > 面试题库 >

XMLHttpRequest无法加载在请求的资源上不存在“ Access-Control-Allow-Origin”标头。起源'http:// localhost:3000'Google地图

鄢朝斑
2023-03-14
问题内容

我是React js的新手,我正在尝试根据用户输入来简单地动态更改地图,但是对于特定的位置搜索请求,此错误会上升

XMLHttpRequest无法加载
https://maps.googleapis.com/maps/api/place/nearbysearch/json?location=undef…ined&radius
= 1000&keyword = fdtbf&key = myapikey。所请求的资源上没有“ Access-Control-Allow-
Origin”标头。因此,不允许访问源’ http:// localhost:3000 ‘。

这是我的节点js代码

import express from 'express';
import path from 'path';
import bodyParser from 'body-parser';

//Import To Pord
import api from './routes/api';
import auth from './routes/auth'
import cookieParser from 'cookie-parser';
import {LoginCheck} from './middleware/authCheck';
import cors from 'cors';


//All Webpack Stuff
import webpackConfig from '../../webpack.config.dev';
import webpack from 'webpack';
import webpackMiddleware from 'webpack-dev-middleware'
import webpackHotMidleware from 'webpack-hot-middleware';


//Server Side Rendering Stuff
import {match, RouterContext  } from 'react-router';
import { Provider } from 'react-redux';
import { dispatch } from 'redux';
import { renderToString, renderToStaticMarkup } from 'react-dom/server';
import reducer from '../../src/client/Reducers';
import routes from '../client/routes';
import thunk from 'redux-thunk';
import { createStore ,applyMiddleware} from 'redux'
import React from 'react'
import Helmet from 'react-helmet';
import serialize from 'serialize-javascript';


//PassPort Stuff Import This




let app = express();
app.use(bodyParser.json());
app.use(express.static('public'))


const compiler = webpack(webpackConfig);

app.use(webpackMiddleware(compiler, {
    hot: true,
    publicPath: webpackConfig.output.publicPath,
    noInfo: true
}));

app.use(webpackHotMidleware(compiler));



app.use(cors());
app.use(cookieParser('sdkhcvlsd684684JJJklvblsdkuvgblsduvblsidvksdjbvlsjvuywlsfvliusdgv'));
//Check Auth MiddleWare
app.use(LoginCheck)
//Passport Api
app.use('/auth',auth);
//Our Api
app.use('/p',api);



app.get('/*', (req, res,next) => {

    // res.sendFile(path.join(__dirname, '../../index.html'))
    // Server Side Rendering Starts
    match({routes:routes(),location:req.url},(err,redirectLocation,renderProps) => {
        if (err) return next(err);


        if (redirectLocation) {
            return res.redirect(302, redirectLocation.pathname + redirectLocation.search)
        }

        // if (!renderProps) {
        //     res.redirect('/404')
        // }

        const components = renderProps.components;

        const Comp = components[components.length - 1].WrappedComponent;

        const fetchData = (Comp && Comp.fetchData) || (() => Promise.resolve())

        const initialState = {}

        const store = createStore(reducer, initialState, applyMiddleware(thunk));


        const { location, params, history } = renderProps

        fetchData({ store, location, params, history }).then(() => {
            const body = renderToString(
                <Provider store={store}>
                    <RouterContext {...renderProps} />
                </Provider>
            )

            const state = store.getState();
            // console.log(state)


            let head = Helmet.rewind();
            res.header('Access-Control-Allow-Origin', "*");
            res.header('Access-Control-Allow-Methods', 'GET,PUT,POST,DELETE');
            res.header('Access-Control-Allow-Headers', 'Content-Type');
            res.send(`<!DOCTYPE html>
          <html>
            <head>
               ${head.title}
                ${head.meta}
                ${head.link}
            </head>
            <body>
              <div id="app" >${body}</div>
              <script>window.__STATE__=${JSON.stringify(state)}</script>

              <script src="/bundle.js"></script>
            </body>
          </html>`)
        })
            .catch((err) => next(err))



    })
});


app.listen(3000 ,() => {
    console.log('Listening')
});

这是我的axios请求

export function getPlaceFromCoords(term,coords) {
    // https://maps.googleapis.com/maps/api/place/nearbysearch/json?location=13.0826802,80.2707184&radius=500&keyword=parks&key=AIzaSyAZbur2hq7p3UxjYrA2_G4ctpswFi0pO3A
    console.log(coords)
    return dispatch => {
        return axios.get(`https://maps.googleapis.com/maps/api/place/nearbysearch/json?location=${coords.lat},${coords.lng}&radius=1000&keyword=${term}&key=${config.MAP_API}`).then(response => {
            return response.data
        })
    }

}

问题答案:

未在Google后端服务器上为Places API
Web服务设置CORS标头。因此,由于浏览器的“同源”策略,您将无法从客户端JavaScript代码调用Places API Web服务。

为了在客户端JavaScript上使用Places,您必须使用Google Maps JavaScript
API的Places库。地方图书馆具有附近的雷达和文本搜索功能,与相应的Web服务非常相似。

有关更多详细信息,请查看文档:

https://developers.google.com/maps/documentation/javascript/places

希望能帮助到你!



 类似资料:
  • 我需要发送数据通过从JavaScript到Python服务器。因为我在使用localhost,所以我需要使用CORS。我正在使用Flask框架及其模块。 作为JavaScript,我有以下几点: 和Python代码: 但是当我执行它时,我会得到这样的信息: XMLHttpRequest无法加载localhost:5000/signin.请求的资源上不存在访问控制允许起源标头。因此,不允许访问源'n

  • 我在区域中有一个S3 bucket,我们称之为。 在那个桶中有一个图片,我们称之为。 如果我通过浏览器访问这两个URL,我就可以检索那个图片(桶中的所有对象都是公共的)(请记住,这些是示例,而不是现实生活中的URL): https://my-bucket.s3.amazonaws.com/some-file.jpg https://s3-eu-west-1.amazonaws.com/my-buc

  • 我打关键斗篷apihttp://localhost:8080/auth/realms/**/协议/openid-connect/令牌与正确的凭据,它的工作正常,但与错误的凭据 当我添加跨域允许时,它会给我印前检查错误 任何人都可以帮我:)PS:使用CORS插件一切正常

  • 问题内容: 我是django的新手,并将其用作创建用户的应用程序的后端。在前端发布用户名的代码是: 在后端,与url相关的功能处理json,但我收到错误消息“请求的资源上没有’Access-Control-Allow-Origin’标头。 问题答案: 你的前端和后端位于不同的端口上,这意味着你的ajax请求受跨源安全性的约束。 你需要设置后端以接受来自不同来源(或只是不同端口号)的请求。

  • 问题内容: 我有一个在服务器上运行的API,并且有一个与之连接的前端客户端来检索数据。我对跨域问题进行了一些研究,并使其起作用。但是我不确定发生了什么变化。我现在在控制台中收到此错误: XMLHttpRequest无法加载https://api.mydomain/api/status。所请求的资源上没有“ Access-Control-Allow-Origin”标头。因此,不允许访问源“ http

  • 问题内容: 实际上,这不是 重复的 帖子,我知道在stackoverflow社区中多次问过的标题的一部分,我阅读了所有帖子和答案,但是我认为我使用的问题和技术是不同的。 首先,我应该提到的是我的后端应用程序,也是我的前端应用程序。 我读了一下,发现必须在App 上启用并放入 请求的标头,但是在调用api时仍然出现以下错误: 所请求的资源上没有“ Access-Control-Allow-Origi