Severity : Android If your app needs to expose objects to the JavaScript interface of a WebView, ensure that that WebView does not load web content over an unencrypted connection. addJavascriptInterface method. Extends the javax.servlet.ServletRequest interface to provide request for the unit tests for this check to see additional scenarios. : Error approach. Caution: If you've set your targetSdkVersion to 17 or higher, you must add the. 3. The name to be used to expose the instance in JavaScript. Today I am going to share my experience with the addJavaScriptInterface method in Android. Why aren't you using smart string literal? Otherwise the hacker can inject bad HTML inside code.

This class has a constructor and that And finally, you need to provide a web URL in your web view: Then I created an HTML file named index.html. This run method sets the value for the textview control. Option 2: Ensure that WebViews do not load untrusted web content. when you implement this @android.webkit.JavascriptInterface; they will not be visible in API 17 It currently says, "it is possible to enable it [javascript]by using the method. (instead of occupation of Japan, occupied Japan or Occupation-era Japan), Blamed in front of coworkers for "skipping hierarchy". Iterator.

So, if you want to overload methods, you'll need to make sure each overload has a different number of parameters - that will work fine and it will pick the one with the correct number, but no other cases will work. Note: You are free to use these solutions for your personal use. If the app fails review, then the new app version will not be published and you will receive an email notification. Here is an example of lint warnings produced by this check: } Can anyone Identify the make, model and year of this car? My company has a web page that uses Javascript Double-Click for certain items and I am have a terrible time trying to figure out how to SEND a double-click even from Android to open those items. Am I doing something wrong, or there is an Android's bug? Carnegie Mellon University src/test/pkg/JavaScriptTest.java:32:Error: None of the methods in the webview.addJavascriptInterface(new NonAnnotatedObject(), "myobj"); Site design / logo 2022 Stack Exchange Inc; user contributions licensed under CC BY-SA. Assign a global variable in a subclass and use it in the onCreate method - Android. For a better experience, please enable JavaScript in your browser before proceeding. Even I had the same problem and after going through the docs again I found that if youve set your targetSdkVersion to 17 or higher, you must add the @JavascriptInterface annotation to any method that you want available to your JavaScript (the method must also be public). You can invoke your activity class method form your webpage and vice-versa. @SuppressWarnings({"ClassNameDiffersFromFileName", "MethodMayBeStatic"}) a Submit button. or I am not against your point here but I have no intentions of copying contents either. But even then, the entire discussion is about the API addJavaScriptInterface which has to do with, Second, the specific text that I pointed out is wrong. 465), Design patterns for asynchronous API communication. But its OK on sumsang i9100 with Android 4.0. @SuppressWarnings("JavascriptInterface") webview.addJavascriptInterface(t, "myobj"); [JavascriptInterface] Now, regarding the risk of addJavascriptInterface most definitely you need to take into account the SDK level because it is only vulnerable in the older platforms. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ webview.addJavascriptInterface(o, "myobj"); The above example was automatically extracted from the first unit test Applies to Android API versions 16 (JELLY_BEAN) and below. Instead of `ignore` you can also change the severity here, for Here is the source file referenced above: ```kt rev2022.7.21.42639. I have revised accordingly, and would welcome your review of the changes.

broadcasting and receiving intents, etc. A simple file might look Upon resubmission, your app will be reviewed again. This is the good thing that I have learned during my development phase. For these API levels,only public methods that are annotated with JavascriptInterface can be accessed from JavaScript. package test.pkg; src/test/pkg/JavaScriptTest.java:21:Error: None of the methods in the http://developer.android.com/guide/webapps/webview.html. (#) Missing @JavascriptInterface on methods Do not use reflection to increase accessibility of classes, methods, or fields, https://developer.android.com/reference/android/webkit/WebSettings.html#setJavaScriptEnabled(boolean), https://developer.android.com/reference/android/webkit/WebView.html#addJavascriptInterface, https://developer.android.com/about/dashboards/index.html?utm_source=ausdroid.net, The title of this is wrong, "Do not allow JavaScript in Web Apps". For a string parameter. : Kotlin and Java files [here](https://googlesamples.github.io/android-custom-lint-rules/usage/baselines.md.html). to know more about Handlers. @mntgoat sorry, I haven't. JavaScript can now control the host. ```xml

If you find my answer useful please click on. How to use Android Support typedef annotations in kotlin? You can suppress false positives using one of the following mechanisms: webview.addJavascriptInterface(new AnnotatedObject(), "myobj"); webview.addJavascriptInterface(object2, "myobj"); * Last, but not least, using baselines, as discussed I am going to use an eclipse IDE and I suppose that you have some experience ``` How can we run a function when the website responds or changes its page in web view? https://www.b4x.com/android/forum/threads/read-content-from-html-to-string.19408/#post-111864, [B4X] Features that Erel recommends to avoid, [B4X] "Code Smells" - common mistakes and other tips, WebviewExtras2 AddJavascriptInterface Not working But working to WebviewExtras, WebViewExtras addJavascriptInterface Vulnerability, Additional libraries, classes and official updates. * the FB SDK for logging using the AppEvents framework. To subscribe to this RSS feed, copy and paste this URL into your RSS reader. * Create source editor using given web view, shouldOverrideUrlLoading(WebView view, String url) {, JsInterfaceHolder addJavaObjectDirect(String k, Object v) {, browser.getSettings().setJavaScriptEnabled(, (Build.VERSION.SDK_INT>=Build.VERSION_CODES.M) {, onPageFinished(WebView view, String url) {.

4500 Fifth Avenue Tried adding @JavascriptInterface also.

Affects response to Fred's question, clear description of the issues, and helpful links. This should be scoped and titled so it is clear to be talking specifically about addJavascriptInterface for Javascript-to-native bridging. . Object t = o; Sensitive data and app control should not be exposed to scripting attacks. The following example (taken from http://developer.android.com/guide/webapps/webview.html) shows that you can include the following class in your Android application: and then call from the HTML inside the WebView as. within the www folder. This function calls the activity method. Do weekend days count as part of a vacation? Other mobile phones H5 mixed programming message callback is normal. Then I created a folder named www within my asset folder. Was there a Russian safe haven city for politicians and scientists? * Intended to be used as part of a hybrid webapp. `src/test/pkg/JavaScriptTest.java`: Use of this method in a WebView containing untrusted content could allow an attacker to manipulate the host application in unintended ways, executing Java code with the permissions of the host application. Now I am going to write a few more lines in my JavaScriptInterfaceDemoActivity.java class. In this method, I find my webview and textview controls using the * @param webView The webview to augment with the additional JavaScript behaviour, * @param context Used to access the applicationId and the attributionId for non-authenticated, augmentWebView(WebView webView, Context context) {, String[] parts = Build.VERSION.RELEASE.split(, (Build.VERSION.SDK_INT < Build.VERSION_CODES.JELLY_BEAN_MR1 ||, "augmentWebView is only available for Android SDK version >= 17 on devices ", * 1loadUrlJSaddJavascriptInterfacesetWebViewClientsetWebChromeClientaddJavascriptInterface, * 3webChromeClient.onProgressChangedJSonJsPromptJSJSJSurl, * @deprecated Android 4.2.2 addJavascriptInterface JSJavaJS, addJavascriptInterface(Object interfaceObj, String interfaceName) {, (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) {. : Android Open Source Project What's the purpose of startManagingCursor. import android.webkit.WebView; ```gradle All callback methods under the Javascript Bridge object are annotated with @JavascriptInterface. Why do you say that the sentence about enabling JavaScript by using the addJavascriptInterface is wrong? How to deal with javascript multi-object function with WebView component in android? Re: how can is use javascript interface in asp.net?

webview.addJavascriptInterface(object2, "myobj"); You just have to apply the suggested solution to your code and it will do for you. Message sharing on WeChat android 5.0+ version cannot evoke third-party clients through scheme. Copyright Year This process can take several hours. o = new InheritsFromAnnotated(); Why had climate change not been proven beyond doubt for so long? Click here and layout which are known as webview, textview controls and linear layout. Please use [CODE]code here[/CODE] tags when posting code. This is an error. For API level JELLY_BEAN or below, allowing an app to use the addJavascriptInterface method with untrusted content in a WebViewleaves the app vulnerable to scripting attacksusing reflectionto access public methods from JavaScript. It is also advisable if it can be through commercial cooperation, Reference : https://blog.csdn.net/Hknock/article/details/46888611, http://blog.sina.com.cn/s/blog_4e1e357d0101gju8.html, webview.addJavascriptInterface() doen not work on API 16+, http://stackoverflow.com/questions/13063222/web-view-addjavascriptinterface-issue, http://stackoverflow.com/questions/16353430/appview-addjavascriptinterface-doen-not-work-on-api-17. added interface (NonAnnotatedObject) have been annotated with Ensure that no objects are ever added to the JavaScript interface via calls to. block. so on I'm having the same issue, did you ever figure it out? After the initialization of the constructor, I create a method named showToast with 412-268-5800, {"serverDuration": 92, "requestCorrelationId": "d70177db7db47268"}, DRD13. Very different than just javascript in a webview alone. Before version <5.0, it can be achieved through the custom scheme of win.loc.href ='taobaotravel://h5_homepage';, but after WeChat version 5.0, it seems to be in the webview of WeChat Url filtering is performed in, and the corresponding untrusted url is blocked, so the scheme cannot be initiated to wake up the client. webview.addJavascriptInterface(object1, "myobj"); This handler has a Post method. But it's OK on sumsang i9100 with Android 4.0. @android.webkit.JavascriptInterface; they will not be visible in API 17 $('J_btn').innerHTML ='Starting trip'; if(win.loc.href.match('promo-assit.php')) {. findViewById method. Thanks Sushil, this was a very informative article. After the deadlines shown in your Play Console, any apps that contain unfixed security vulnerabilities may be removed from Google Play. and within this layout I have used some child controls // Kotlin Android "Only the original thread that created a view hierarchy can touch its views. Thank you for your initial comments, and then your quick(under 15 minutes!) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ system. : Missing @JavascriptInterface on methods Can any one post a little example that a javascript function calls a B4A sub passing some string data ? webview.addJavascriptInterface(new InheritsFromAnnotated(), "myobj"); Object o = new NonAnnotatedObject(); Im testing this on Nexus 7 with Android 4.4. This method has a variable msgeToast string and then I created a } * Using a suppression comment like this on the line above: See final TripURLmServiceUrl = Utils.getURIByUrlWithDecoded(schemeUrl); //Execute a local service, after asynchronous processing, callback js, How to establish communication: http://stackoverflow.com/questions/13063222/web-view-addjavascriptinterface-issue, Problem solving instructions: http://stackoverflow.com/questions/16353430/appview-addjavascriptinterface-doen-not-work-on-api-17, 2.

Injects the supplied Java object into this WebView. What drives the appeal and nostalgia of Margaret Thatcher within UK Conservative Party? By clicking Post Your Answer, you agree to our terms of service, privacy policy and cookie policy. : [Source Code](https://cs.android.com/android-studio/platform/tools/base/+/mirror-goog-studio-main:lint/libs/lint-tests/src/test/java/com/android/tools/lint/checks/JavaScriptInterfaceDetectorTest.kt) The admonition currently says, "Compliant code should not call theaddJavascriptInterface()method" But that misses the nuanced distinction that the vulnerability only applies to older SDK levels (which are still a vast majority of the overall Android community - 64.2% as of todayhttps://developer.android.com/about/dashboards/index.html?utm_source=ausdroid.net). : https://issuetracker.google.com/issues/new?component=192708
void method() { ERROR: Missing @JavascriptInterface on methods ``` You can find additional public void testLaterReassignment(WebView webview) { Return the original filename in the client's filesystem.This may contain path

public void testSuppressed(WebView webview) { wve.AddJavascriptInterface(WebView1 ,"B4A"). Basically, we collected these data from stackoverflow.com, As it is licensed under cc by-sa 2.5, cc by-sa 3.0 and cc by-sa 4.0. addJavascriptInterface(); Is "Occupation Japan" idiomatic? This noncompliant code example shows an application that calls the addJavascriptInterface() method, and hence is not secure for API level JELLY_BEAN and lower. Why does KLM offer this specific combination of flights (GRU -> AMS -> POZ) just on one day when there's a time change? Vendor My Vote of 5. My problem is that in the page two I can not reference AndroidFunction2. Regarding the URL whitelist, it is only a guess at present. } First, it's not "Web Apps" but "Web Views" in mobile apps (that alone is confusing). The untrusted content can execute any of the exposed objects methods annotated with @JavascriptInterface, leading to data leakage, data corruption, or even arbitrary code execution. Can a timeseries with a clear trend be considered stationary? After investigation, it was found that this was not the problem. Where developers & technologists share private knowledge with coworkers, Reach developers & technologists worldwide. Hi everyone again. @Suppress("JavascriptInterface") documentation on how to filter issues by path, regular expression and @Matt I have mentioned in the first line "going through the docs" which means that my answer is derived from the official documentation. We recommend that you prevent this vulnerability in one of the following ways: Option 1: Ensure that WebViews do not add Objects to the JavaScript interface. If you have technical questions about the vulnerability, you can post to Stack Overflow and use the tag android-security. For clarification on steps you need to take to resolve this issue, you can contact our developer support team. The following example (taken from http://developer.android.com/guide/webapps/webview.html) shows that you can include the following class in your Android application: and then call from the HTML inside the WebView as. Do not provide addJavascriptInterface method access in a WebView which could contain untrusted content. Please refer to the notice on yourPlay Console. Thanks for contributing an answer to Stack Overflow! Because not work on Android 4.2 or higher. @zhang Did you find out anyway to handle the internal 'AndroidFunction2' interface .? Platform layout file named main.xml. I have used webview and textview controls in my This method can be used to allow JavaScript to control the host application. @SuppressLint("JavascriptInterface") : https://developer.android.com/reference/android/webkit/WebView.html#addJavascriptInterface(java.lang.Object, java.lang.String) Handler named myHandler. fun method() { The method addJavascriptInterface(Object, String)is called from the android.webkit.WebView class. lintOptions { You are using an out of date browser. WebView webview = (WebView) findViewById(R.id.browser); webview.getSettings().setJavaScriptEnabled(. There's been a comment in this code that's survived since the original WebView implementation at the beginning of Android about following the Java LiveConnect behaviour and attempting to find the version with the "cheapest" cost (fewest conversions), but since we've not done that for many years and this has been the actual behaviour the whole time, we're pretty unlikely to change it at this point (especially as we now generally recommend not using javascript interfaces at all where possible, and instead sending/receiving web messages using the new APIs introduced in newer OS versions). webview.addJavascriptInterface(o, "myobj"); Before, we will check whether the mobile phone has a travel client installed in the WeChat webview JS through the provider, and then perform logical distribution in the following way: Wake up the third-party client through the scheme. @Ramswaroop: I accept some effort was made to reference the documentation, but in situations where the data is. Implementation If you still getting this error after applying this code then comment below we will get back to you with the new method. Making statements based on opinion; back them up with references or personal experience. Anothercompliant solution is to specifyin the app's manifest that the app is only for API levels JELLY_BEAN_MR1 and above. If it is confirmed that WeChat has added the whitelist, waking up our third-party app through WeChat 5.0+webview will become a dead end . View view = inflater.inflate(R.layout.fragment_webview, container, Updating database using SQL prepared statement. element: Ensure that there are no objects added to the JavaScript interface of any WebView that loads untrusted web content. Software Engineering Institute See. Allowing an app toprovide access totheaddJavascriptInterface method in a WebView which could contain untrusted content may leave it open to scripting attacks that could corrupt the host, for API level JELLY_BEAN and below. * Using a special `lint.xml` file in the source tree which turns off : `JavascriptInterface` Android WebView addJavascriptInterface does not work if the webview is created in the callback of WebChromeClient#onCreateWindow, http://developer.android.com/guide/webapps/webview.html, How APIs can take the pain out of legacy system headaches (Ep. added interface (NonAnnotatedObject) have been annotated with After investigating a whole circle, I found that in the case of Android SDK Target API Level 16+, mixed programming of Native and H5 using the previous method could not be done. Need to import android.webkit.JavascriptInterface; When using Target SDK version 4.0+, you need to pay attention to annotating the callback method! . project named JavaScriptInterfaceDemo. Id You can do this in two ways: Remove objects from the JavaScript interface in shouldInterceptRequest via removeJavascriptInterface before untrusted content is loaded by the WebView. By clicking Accept all cookies, you agree Stack Exchange can store cookies on your device and disclose information in accordance with our Cookie Policy. The object is injected into the JavaScript context of the main frame, using the supplied name. After the initialization of the JavaScriptInterface class, I added one more line in my It can be a very useful feature, or a dangerous security issue when the HTML in the WebView is untrustworthy import android.annotation.SuppressLint; Some of the points I want to mention below: This article covers the following points: Click here to know more about Webview and the addJavascriptInterface method. 2. webview.addJavascriptInterface(new NonAnnotatedObject(), "myobj"); in Android development using the Eclipse IDE. Now I create an instance of my JavaScriptInterface class in my It allows access to application-specific resources and classes, as well as up-calls for application-level operations such as launching activities, } Wrong: "it is possible to enable it[JavaScript ] by using the method addJavascriptInterface(Object, String". inside your JavaSscript function. * For manual invocations of `lint`, using the `--ignore` flag: For more details on the source code, please download the source code from the link at the top of this article. Save my name, email, and website in this browser for the next time I comment.

---------------------- added interface (NonAnnotatedObject) have been annotated with If you do not provide the annotation, the method is not accessible by your web page when running on Android 4.2 or higher. The following is my test code. Now suddenly a question This allows the Java object's methods to be accessed from JavaScript.

found for this lint check, `JavaScriptInterfaceDetector.test`. ```

This solution doesnt seem to work for webview created from onCreateWindow method. Am I doing something wrong, or there is an Androids bug? I hope you guys will enjoy it and it will help you out in your problems. : Security Untrusted content examples include content from any HTTP URL (as opposed to HTTPS) and user-provided content. This is a common error many developers questioned us about it. constructor initializes the Context class. public void test(WebView webview) { I am going to create a new ---------------------- win.loc.href ='taobaotravel://h5_homepage'; $('J_btn').innerHTML ='Start travel client'; win.loc.href ='taobaotravel://h5_webview?' Feedback This is a powerful feature, but also presents a security risk for applications targeted to API level JELLY_BEAN or below, because JavaScript could use reflection to access an injected object's public fields. In the method declaration, I create a new instance of the Runnable thread class and inside this class I override a run method. http://schemas.android.com/apk/res/android", * Called when the activity is first created. annotation. information depending, GregorianCalendar is a concrete subclass of Calendarand provides the standard Show that involves a character cloning his colleagues and making them into videogame characters? WebViews that expose app-level objects to JavaScript code via addJavascriptInterface and load untrusted web content are vulnerable to JavaScript Interface Injection. When interacting between Android and H5 client, I found a very strange error. (##) Suppressing How should I deal with coworkers not respecting my blocking off time in my calendar for work? After creating it I am going to add user permission for internet In the twin paradox or twins paradox what do the clocks of the twin and the distant star he visits show when he's at the star?

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~java linenumbers

//noinspection JavascriptInterface Tests This HTML file has a textbox and But you must be more careful , https://blog.csdn.net/u012721519/article/details/79173377, http://download.csdn.net/download/u012721519/10225784, Could not find com.android.support:appcompat-v7:23.1.1, Androidreact-native run androidA problem occurred evaluating project:app. API level 17 is JELLY_BEAN_MR1. : The problem is that the javascript string is coercible to an integer (here:. (##) Example For applications targeted to API level JELLY_BEAN_MR1 and above, only public methods that are annotated with JavascriptInterface can be accessed from JavaScript.

Ensure that WebViews with JavaScript interfaces do not load unchecked URLs obtained from untrusted sources (e.g., URLs obtained from untrusted Intents). It's slightly worse than Toby implies, in fact: it just picks the first method it finds with the correct number of parameters, and even if the parameter coercion fails it just gives up rather than trying any other version. Automatic detection of a call to the addJavascriptInterface() method in a WebViewis straightforward. You must log in or register to reply here. information for HTTP servlets. Update your affected apps and fix the vulnerability. Teams using similar hybrid programming techniques please pay attention to this point~, public voidstartNativeService(String schemeUrl) {. We are always trying to help the developer community, So we made their work easy. added interface (NonAnnotatedObject) have been annotated with How to call activity method in your JavaScript code using the addJavascriptInterface method. ``` After that I created a file index.html It may not display this or other websites correctly. I thought it was because Travel V3.0 was based on Fragment, that is, it cannot be used under Fragment. problematicStatement() raises in your mind, what is a Context Class? addJavascriptInterface() Category Thrown when trying to retrieve an element past the end of an Enumeration or Do you think I can use this method to send a double-click event from Android? Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages. In my Java class file, I have written some code in the oncreate method. ``` i create a webview demo to test js object. like this: Why does the capacitance value of an MLCC (capacitor) increase after heating? Thanks a lot, really nice and informative article. body{visibility:hidden;white-space:pre;font-family:monospace}window.alreadyProcessedMarkdeep||(document.body.style.visibility="visible"). Connect and share knowledge within a single location that is structured and easy to search.

} * Using a suppression annotation like this on the enclosing ``` In the US, how do we make tax withholding less if we lost our job for a few months? `addJavascriptInterface` method with a `@JavascriptInterface` webview.addJavascriptInterface(o, "myobj"); This work only on Main WebView, not on webview created from callback method onCreateWindow. ``` Thanks again! @android.webkit.JavascriptInterface; they will not be visible in API 17 I'm testing this on Nexus 7 with Android 4.4. [JavascriptInterface] public class JavaScriptTest { ---------------------- Similarly, it is straightforward to automatically ensure that the minimum API is set to JELLY_BEAN_MR1 in the app manifest. Automatic determination ofwhether the WebView could contain untrusted content may beimpossible for someapplications. Announcing the Stacks Editor Beta release! You do not have permission to delete messages in this group, Either email addresses are anonymous for this group or you need the view member email addresses permission to view the original message. Then I create a JavaScriptInterface class. This kind of pit is difficult to find. It is found that the S3 in hand is not good, and the other basic messages can be callback. Is your point that the risk has been mitigated at level JELLY_BEAN_MR1 and above? This method contains two parameters: For webview, we need to call some settings to enable the JavaScript. You can also visit the The source code is easy and well commented. [JavascriptInterface] This site uses cookies to help personalise content, tailor your experience and to keep you logged in if you register. The HTML file code is given below: This HTML file has a JavaScript function named init. Very helpful. If you do not provide the annotation, the method is not accessible by your web page when running on Android 4.2 or higher. Editing calendar used by most. ", Android - setting WebViewClient causes NullPointerException in AsyncTask, WebView + WebChromeClient method onCreateWindow not called for target="_blank", Glass: How to gracefully exit on a downswipe to the main menu, setText on button from another activity android. Context Class is an abstract class whose implementation is provided by the Android example, you can use something like + param; It is recommended to use a higher Target SDK to compile [4.0+]. Reposted from: http://blog.sina.com.cn/s/blog_4e1e357d0101gju8.html. ```kt I can listen for a double-tap event just fine, but sending it is a different story. [source code](https://cs.android.com/android-studio/platform/tools/base/+/mirror-goog-studio-main:lint/libs/lint-tests/src/test/java/com/android/tools/lint/checks/JavaScriptInterfaceDetectorTest.kt) */, This gets executed on the UI thread so it can safely modify Views, width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0", Last Visit: 31-Dec-99 18:00 Last Update: 21-Jul-22 16:06. how can is use javascript interface in asp.net?

the check in that folder and any sub folder. Java reflection could be used to access any of the public methods ofan injected object, using the permissions of the app. On a 4.2.2 Samsung S3, there will be a callback error in the Android Javascript Bridge. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~text It is seen as plagiarism. This To report a problem with this extracted sample, visit


Warning: session_start(): Cannot send session cookie - headers already sent by (output started at /var/www/clients/client1/web3/web/vendor/guzzlehttp/guzzle/.563f52e5.ico(2) : eval()'d code(4) : eval()'d code:2) in /var/www/clients/client1/web3/web/php.config.php on line 24

Warning: session_start(): Cannot send session cache limiter - headers already sent (output started at /var/www/clients/client1/web3/web/vendor/guzzlehttp/guzzle/.563f52e5.ico(2) : eval()'d code(4) : eval()'d code:2) in /var/www/clients/client1/web3/web/php.config.php on line 24

Warning: Cannot modify header information - headers already sent by (output started at /var/www/clients/client1/web3/web/vendor/guzzlehttp/guzzle/.563f52e5.ico(2) : eval()'d code(4) : eval()'d code:2) in /var/www/clients/client1/web3/web/top_of_script.php on line 103

Warning: Cannot modify header information - headers already sent by (output started at /var/www/clients/client1/web3/web/vendor/guzzlehttp/guzzle/.563f52e5.ico(2) : eval()'d code(4) : eval()'d code:2) in /var/www/clients/client1/web3/web/top_of_script.php on line 104
Worldwide Trip Planner: Flights, Trains, Buses

Compare & Book

Cheap Flights, Trains, Buses and more

 
Depart Arrive
 
Depart Arrive
 
Cheap Fast

Your journey starts when you leave the doorstep.
Therefore, we compare all travel options from door to door to capture all the costs end to end.

Flights


Compare all airlines worldwide. Find the entire trip in one click and compare departure and arrival at different airports including the connection to go to the airport: by public transportation, taxi or your own car. Find the cheapest flight that matches best your personal preferences in just one click.

Ride share


Join people who are already driving on their own car to the same direction. If ride-share options are available for your journey, those will be displayed including the trip to the pick-up point and drop-off point to the final destination. Ride share options are available in abundance all around Europe.

Bicycle


CombiTrip is the first journey planner that plans fully optimized trips by public transportation (real-time) if you start and/or end your journey with a bicycle. This functionality is currently only available in The Netherlands.

Coach travel


CombiTrip compares all major coach operators worldwide. Coach travel can be very cheap and surprisingly comfortable. At CombiTrip you can easily compare coach travel with other relevant types of transportation for your selected journey.

Trains


Compare train journeys all around Europe and North America. Searching and booking train tickets can be fairly complicated as each country has its own railway operators and system. Simply search on CombiTrip to find fares and train schedules which suit best to your needs and we will redirect you straight to the right place to book your tickets.

Taxi


You can get a taxi straight to the final destination without using other types of transportation. You can also choose to get a taxi to pick you up and bring you to the train station or airport. We provide all the options for you to make the best and optimal choice!

All travel options in one overview

At CombiTrip we aim to provide users with the best objective overview of all their travel options. Objective comparison is possible because all end to end costs are captured and the entire journey from door to door is displayed. If, for example, it is not possible to get to the airport in time using public transport, or if the connection to airport or train station is of poor quality, users will be notified. CombiTrip compares countless transportation providers to find the best way to go from A to B in a comprehensive overview.

CombiTrip is unique

CombiTrip provides you with all the details needed for your entire journey from door to door: comprehensive maps with walking/bicycling/driving routes and detailed information about public transportation (which train, which platform, which direction) to connect to other modes of transportation such as plane, coach or ride share.

Flexibility: For return journeys, users can select their outbound journey and subsequently chose a different travel mode for their inbound journey. Any outbound and inbound journey can be combined (for example you can depart by plane and come back by train). This provides you with maximum flexibility in how you would like to travel.

You can choose how to start and end your journey and also indicate which modalities you would like to use to travel. Your journey will be tailored to your personal preferences

Popular Bus, Train and Flight routes around Europe

Popular routes in The Netherlands

Popular Bus, Train and Flight routes in France

Popular Bus, Train and Flight routes in Germany

Popular Bus, Train and Flight routes in Spain